Browse Source

Day 3-2

trunk
Shanti Chellaram 3 years ago
parent
commit
84cc289d77
  1. 13
      day3.erl

13
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,
<<Compartment1:CompartmentSize/binary, Compartment2:CompartmentSize/binary>> = Rucksack,
[DupeLetter] = maps:keys(sets:intersection(tally(Compartment1), tally(Compartment2))),

Loading…
Cancel
Save