adventofcode2017/dec2.ml

43 lines
1.0 KiB
OCaml

(*The spreadsheet consists of rows of apparently-random numbers.*)
(*To make sure the recovery process is on the right track, they*)
(*need you to calculate the spreadsheet's checksum. For each*)
(*row, determine the difference between the largest value and*)
(*the smallest value; the checksum is the sum of all of these*)
(*differences.*)
(*For example, given the following spreadsheet:*)
(*5 1 9 5*)
(*7 5 3*)
(*2 4 6 8*)
(*The first row's largest and smallest values are 9 and 1, and their*)
(*difference is 8.*)
(*The second row's largest and smallest values are 7 and 3, and their*)
(*difference is 4.*)
(*The third row's difference is 6.*)
open Batteries
let get_max_min_diff lst =
(List.max lst) - (List.min lst)
let parse_line line =
let
split = String.split_on_char '\t'
in
split line
|> List.map int_of_string
|> get_max_min_diff
let parse_input input =
Enum.map parse_line input
|> Enum.sum
let () =
"dec2_input"
|> File.lines_of
|> parse_input
|> print_int