Пролог как распечатать первые 3 элемента в списке - PullRequest
4 голосов
/ 12 октября 2011

Как мне распечатать первые 3 элемента в списке.

У меня есть метод печати

print([]).
print([X]) :-    !, write(X).
print([X|T]) :-    write(X),    write(', '),   print(T), nl.

Ответы [ 2 ]

9 голосов
/ 12 октября 2011

В Прологе типичным способом реализации итерации является рекурсия:

print(0, _) :- !.
print(_, []).
print(N, [H|T]) :- write(H), nl, N1 is N - 1, print(N1, T).

Если мы достигли нуля или имеем пустой список, ничего не делаем. Если мы должны что-то сделать, напечатайте первый элемент в списке, вычислите новый N и рекурсивно вызовите себя.

Вырезать (!) в первом предложении необходимо, иначе нам понадобится условие для N в последнем.

4 голосов
/ 12 октября 2011

Если у вас всегда есть хотя бы древовидные элементы, то очень просто

 print_first_three([A,B,C|_]) :- print(A), print(B), print(C).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...