1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
:- use_module(library(yall)).
:- use_module(library(apply)).
get_data(Result) :-
setup_call_cleanup(open("day-01/input.txt", read, In),
(read_string(In, _, Str),
split_string(Str, "\n", "\s\t\n", Lines),
maplist(number_string, Result, Lines)),
close(In)).
calculate_diffs(Result, WindowWidth) :-
get_data(Xs),
length(TrimLeft, WindowWidth), append(TrimLeft, RightSide, Xs),
length(TrimRight, WindowWidth), append(LeftSide, TrimRight, Xs),
maplist([X, Y, Z]>>(Z is Y - X), LeftSide, RightSide, Diffs),
include([X]>>(X > 0), Diffs, Increases),
length(Increases, Result).
part1_answer(Result) :- calculate_diffs(Result, 1).
part2_answer(Result) :- calculate_diffs(Result, 3).
|