diff --git a/aoc.m b/aoc.m index 0011582..99f7a3e 100644 --- a/aoc.m +++ b/aoc.m @@ -16,31 +16,16 @@ main(!IO) :- wrap_main(main2, !IO). :- pred main2(io::di, io::uo) is cc_multi. main2(!IO) :- command_line_arguments(Args, !IO), - (if Args = [DayS, PartS, File], - to_int(DayS, Day), - part(PartS, Part) then ( - read_lines_need(File, Lines, !IO), - run_day(Day, Part, Lines, Out), - write_line(univ_value(Out), !IO) - ) else - die("expected day, part, filename")). - -:- type sol == (pred(part, lines, univ)). -:- inst sol == (pred(in, in, out) is cc_multi). - -:- pred solution(int::in, sol::out(sol)) is semidet. -:- import_module day1. -solution(1, day1.run). -:- import_module day2. -solution(2, day2.run). -:- import_module day3. -solution(3, day3.run). -:- import_module day4. -solution(4, day4.run). -:- import_module day5. -solution(5, day5.run). -:- import_module day6. -solution(6, day6.run). + (if + Args = [DayS, PartS, File], + to_int(DayS, Day), + part(PartS, Part) + then + read_lines_need(File, Lines, !IO), + run_day(Day, Part, Lines, Out), + write_line(univ_value(Out), !IO) + else + die("expected day, part, filename")). :- pred run_day(int, part, lines, univ). :- mode run_day(in, in, in, out) is cc_multi. @@ -49,3 +34,21 @@ run_day(Day, Part, Lines, Out) :- P(Part, Lines, Out) else die("no solution for day %d", [i(Day)]). + +:- type sol == (pred(part, lines, univ)). +:- inst sol == (pred(in, in, out) is cc_multi). + +:- import_module day1. +:- import_module day2. +:- import_module day3. +:- import_module day4. +:- import_module day5. +:- import_module day6. + +:- pred solution(int::in, sol::out(sol)) is semidet. +solution(1, day1.run). +solution(2, day2.run). +solution(3, day3.run). +solution(4, day4.run). +solution(5, day5.run). +solution(6, day6.run).