let file = "data/sample.txt"

let rec next previous map =
  let apply destination source range value =
    let delta = value - source in
    destination + delta
  in match map with
     | [] -> None
     | (destination, source, range)::q when
            previous >= previous && previous <= previous + range
            -> Some(apply destination source range previous)
     | h::q -> next previous q

let res = next 98 [(50,98,2);(52,50,48)]


let () =
  let ic = open_in file in
      let line = input_line ic in
      (* read line *)
      print_endline line;
      flush stdout;
      close_in ic
    with e -> close_in_noerr ic;
             raise e

let () = print_endline file