Browse Source

Day 4-2.

trunk
Shanti Chellaram 3 years ago
parent
commit
1f43c3b6b0
  1. 25
      day4.erl

25
day4.erl

@ -4,21 +4,26 @@
solve(InputData) -> solve(InputData) ->
Lines = binary:split(InputData, <<$\n>>, [trim_all, global]), Lines = binary:split(InputData, <<$\n>>, [trim_all, global]),
{part1(Lines), none}.
solver(Lines, {0, 0}).
part1([]) -> 0;
part1([Entry | Rest]) ->
solver([], Acc) -> Acc;
solver([Entry | Rest], {Part1, Part2}) ->
Ranges = binary:split(Entry, <<",">>, [trim_all, global]), Ranges = binary:split(Entry, <<",">>, [trim_all, global]),
[[F1, F2], [S1, S2]] = lists:map(fun(Range) -> binary:split(Range, <<"-">>, [trim_all, global]) end, Ranges), [[F1, F2], [S1, S2]] = lists:map(fun(Range) -> binary:split(Range, <<"-">>, [trim_all, global]) end, Ranges),
First = {binary_to_integer(F1), binary_to_integer(F2)}, First = {binary_to_integer(F1), binary_to_integer(F2)},
Second = {binary_to_integer(S1), binary_to_integer(S2)}, Second = {binary_to_integer(S1), binary_to_integer(S2)},
io:format("~n~p ~p", [First, Second]),
case range_intersect(First, Second) of
First -> 1;
Second -> 1;
_SomethingElse -> io:format(" out"), 0
end + part1(Rest).
Intersection = range_intersect(First, Second),
{P1Flag, P2Flag} =
case Intersection of
First -> {1, 1};
Second -> {1, 1};
SomethingElse ->
case range_is_empty(Intersection) of
false -> {0, 1};
true -> {0, 0}
end
end,
solver(Rest, {Part1+P1Flag, Part2+P2Flag}).
range_empty() -> {0, -1}.
range_is_empty({Bottom, Top}) -> Top < Bottom. range_is_empty({Bottom, Top}) -> Top < Bottom.
range_intersect({B1, T1}, {B2, T2}) -> {max(B1, B2), min(T1, T2)}. range_intersect({B1, T1}, {B2, T2}) -> {max(B1, B2), min(T1, T2)}.
Loading…
Cancel
Save