open AoC2018 open Stdio let user_prompt (prompt: string): int = print_string prompt; flush stdout; match In_channel.input_line In_channel.stdin with | None -> failwith "no input given!" | Some line -> int_of_string line let load_file f = let ic = open_in f in let n = in_channel_length ic in let s = Bytes.create n in really_input ic s 0 n; close_in ic; (Bytes.unsafe_to_string s) let () = let day = user_prompt "which day? " in let part = user_prompt "which part? " in match (day, part) with | (1, 1) -> load_file "inputs/day1.txt" |> Day1.part_1 |> printf "%d\n" | (1, 2) -> load_file "inputs/day1.txt" |> Day1.part_2 |> printf "%d\n" | (2, 1) -> load_file "inputs/day2.txt" |> Day2.part_1 |> printf "%d\n" | (2, 2) -> load_file "inputs/day2.txt" |> Day2.part_2 |> printf "%s\n" | _ -> printf "invalid combination\n"