summaryrefslogtreecommitdiff
path: root/aoc22/day6/solve.pl
blob: 8452fff1873dacdcf20a800aca2a3b517954fc2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
% vim: ft=prolog

main(Filepath) :- read_file_to_string(Filepath, InputString, []),
                  atom_chars(InputString, Input),
                  p1(Input, Ans1),
                  writeln(Ans1),
                  % p2(Input, Ans2),
                  % writeln(Ans2),
                  !.

% p1([A,B,C,D|_], 4) :- unique([A,B,C,D]).
p1(XS, 4) :- take(XS, 4, YS), unique(YS).
p1([_|T], L) :- p1(T, L1), L is L1+1.


unique([H|T]) :- \+ member(H, T), unique(T).
unique([]).

p2(XS, 14) :- take(XS, 14, YS), unique(YS).
p2([_|T], L) :- p2(T, L1), L is L1+1.

% take(XS, N, YS) :- take(XS, N, [], YS).
% take(_, 0, Acc, Acc).
% take([X|XS], N, Acc, YS) :- N1 is N - 1, take(XS, N1, [X|Acc], YS).