diff --git a/day4.erl b/day4.erl new file mode 100644 index 0000000..5fb3871 --- /dev/null +++ b/day4.erl @@ -0,0 +1,24 @@ +-module(day4). + +-export([solve/1]). + +solve(InputData) -> + Lines = binary:split(InputData, <<$\n>>, [trim_all, global]), + {part1(Lines), none}. + +part1([]) -> 0; +part1([Entry | Rest]) -> + Ranges = binary:split(Entry, <<",">>, [trim_all, global]), + [[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)}, + 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). + +range_empty() -> {0, -1}. +range_is_empty({Bottom, Top}) -> Top < Bottom. +range_intersect({B1, T1}, {B2, T2}) -> {max(B1, B2), min(T1, T2)}.