aboutsummaryrefslogtreecommitdiff
path: root/racket/aoc2021/day-01/day-01.pl
blob: d3c3fa789d9bed603aa54eda97604162a38606e0 (plain)
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).