Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !.split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).
Объяснение:
Первыми переправляются дети.
Сын возвращается к маме-папе.
Папа едет на берег к дочери, потом дочь едет за братом и возвращается с ним к папе.
Сын едет к маме, отдает ей лодку, чтобы она переплыла к папе и дочери.
После того, как мама переправилась, дочь садится в лодку и едет к брату, подбирает его, и вместе они едут к родителям.
Дочь остается с родителями, а сын едет к рыбаку, отдает ему лодку.
Рыбак едет к родителям и высаживается.
Дочь садится и едет за братом, привозит его с собой обратно (наконец-то вся семья снова вместе), они отдают лодку рыбаку.
Лодка пересекла реку 13 раз.