diff --git a/day3.erl b/day3.erl index 81fffac..466e85f 100644 --- a/day3.erl +++ b/day3.erl @@ -4,9 +4,18 @@ solve(InputData) -> Rucksacks = binary:split(InputData, <<$\n>>, [trim_all, global]), - {lists:foldl(fun asdf/2, 0, Rucksacks), none}. + {lists:foldl(fun part1/2, 0, Rucksacks), part2(Rucksacks)}. -asdf(Rucksack, TotalPriority) -> +part2([]) -> 0; +part2([Ruck1, Ruck2, Ruck3 | Rest]) -> + [Badge] = maps:keys( + sets:intersection( + sets:intersection(tally(Ruck1), tally(Ruck2)), + tally(Ruck3) + )), + priority(Badge) + part2(Rest). + +part1(Rucksack, TotalPriority) -> CompartmentSize = byte_size(Rucksack) div 2, <> = Rucksack, [DupeLetter] = maps:keys(sets:intersection(tally(Compartment1), tally(Compartment2))),