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).