-
Notifications
You must be signed in to change notification settings - Fork 0
/
four.erl
27 lines (22 loc) · 927 Bytes
/
four.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-module(four).
-compile([export_all]).
firststar() ->
% Careful - this reads data as binary
{ok, Data} = file:read_file("four.txt"),
Lines = lists:droplast(binary:split(Data, <<"\n">>, [global])),
WLines = lists:map(fun(X) -> binary:split(X, <<" ">>, [global]) end, Lines),
SetList = lists:filter(fun(X) -> length(X) ==
sets:size(sets:from_list(X)) end, WLines),
length(SetList).
secondstar() ->
{ok, Data} = file:read_file("four.txt"),
Lines = lists:droplast(binary:split(Data, <<"\n">>, [global])),
WLines = lists:map(fun(X) -> binary:split(X, <<" ">>, [global]) end, Lines),
SetList = lists:filter(fun(X) -> length(X) ==
sets:size(make_sorted_set(X)) end, WLines),
length(SetList).
bin_to_sorted_list(Bin) ->
lists:sort(
erlang:binary_to_list(Bin)).
make_sorted_set(Bin) ->
sets:from_list( [ bin_to_sorted_list(X) || X <- Bin ] ).