17 lines
452 B
Nix
17 lines
452 B
Nix
with import ../../util.nix;
|
|
|
|
let
|
|
# read input
|
|
input = stringToCharacters (readFile ./input);
|
|
|
|
marker = markerLength: data:
|
|
let
|
|
isMarker = l: length (unique l) == markerLength;
|
|
search = start: l:
|
|
if isMarker (sublist (start - markerLength + 1) markerLength l) then start +1
|
|
else search (start +1) l;
|
|
in search (markerLength -1) input;
|
|
in rec {
|
|
part1 = marker 4 input;
|
|
part2 = marker 14 (drop part1 input);
|
|
} |