29 lines
664 B
Prolog
29 lines
664 B
Prolog
numbers_strings([], []).
|
|
numbers_strings([A|As], [B|Bs]) :-
|
|
number_string(A, B),
|
|
numbers_strings(As, Bs).
|
|
|
|
read_file(Stream, X) :-
|
|
\+ at_end_of_stream(Stream),
|
|
read_line_to_codes(Stream, C),
|
|
string_chars(S, C),
|
|
split_string(S, ",", "", Y),
|
|
numbers_strings(X, Y),
|
|
at_end_of_stream(Stream).
|
|
|
|
main :-
|
|
open('../input/07', read, Stream),
|
|
read_file(Stream, Lines), !,
|
|
close(Stream),
|
|
msort(Lines, L),
|
|
length(L, Len),
|
|
I is Len // 2,
|
|
nth0(I, L, X),
|
|
calculate_diff(L, X, N),
|
|
print([X, N]).
|
|
|
|
calculate_diff([], _, 0).
|
|
calculate_diff([A|As], X, B) :-
|
|
calculate_diff(As, X, B0),
|
|
B is B0 + abs(A - X).
|