read_file(Stream, []) :- at_end_of_stream(Stream). read_file(Stream, [X|L]) :- \+ at_end_of_stream(Stream), read_line_to_codes(Stream, C), atom_chars(A, C), read_file(Stream, L), atom_number(A, X). main :- open('../input/01', read, Stream), read_file(Stream, Lines), !, close(Stream), step(Lines, N), print(N). step([], 0). step([A|Tail], B) :- step_(A, Tail, B). step_(_, [], 0). step_(A, [B|Tail], Res) :- A < B, step_(B, Tail, TailRes), Res is TailRes + 1. step_(A, [B|Tail], Res) :- A >= B, step_(B, Tail, Res).