Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Перемещение по списку

Автор вопроса: DJPlayerОтветов: 1

Изучая это очень медленно ... сегодня получил несколько книг, и они просто отстой ...

Итак.. Я пытаюсь переместить позицию X по списку.. затем вернуть оставшуюся часть списка. Проблема в том, что я возвращаю просто элемент в этой позиции, а не список. Я считаю, что моя проблема либо в базовом случае, либо в неизвестной переменной. Я также не уверен на 100%, когда следует использовать "_".

объяснение было бы чрезвычайно полезно .. спасибо заранее.

move([X|_],0,X).
move([X|XS],K,L) :- K>0,
    K1 is K-1, move(XS,K1,L).
  • Я считаю, что move - довольно вводящее в заблуждение название этой операции. Я бы назвал это, например. получить_хвост/3. Kaarel 23.04.2011
  • @Kaarel: идиоматическое имя для этого предиката - nth_tail. Fred Foo 24.04.2011

prolog

Ответы

Ответ 1 · рейтинг 2 · Nick Main

Базовый вариант должен быть move(X,0,X).

move([X|_],0,X) объединит X с единственным элементом во главе списка.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы