Я новичок в Prolog, и я пытаюсь написать предикаты, которые сохраняются true, когда n элементов из списка. Это то, что я написал, и он, похоже, не работает:
take(N, List, Front):- length(Front, N), append(Front, [], List).
Я предположил, что для переноса (N, List, Front), чтобы сохранить true, список и фронт должны быть теми же списками, что означает, что append(Front, [], List)
должен иметь значение true, и Front должен иметь размер N, поэтому length(Front, N)
должен иметь значение true.взять n элементов из списка перед списком в Prolog
Теперь, когда я пытаюсь это интерпретатор, я получаю следующее:
29 ?- take(5, [1,2,3,4,5], Polo).
Polo = [1, 2, 3, 4, 5]
30 ?- take(3, [1,2,3,4,5], Ok).
false.
Спасибо, что определенно сработает, но по какой-то причине, если я поменяю take (N, List, Front): - length (Front, N), append (Front, [], List). (N, список, фронт): - длина (фронт, N), добавление (фронт, _, список). он отлично работает. Может кто-нибудь объяснить, почему. – killuminati
Я имею в виду это: take (N, List, Front): - length (Front, N), append (Front, _, List). – killuminati
Спасибо за объяснение, это делает его намного яснее. – killuminati