Предикат Prolog не распознает переданный параметр в рекурсии - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь написать синтаксис пролога, чтобы удалить каждый n-й элемент списка. Мой код следующий:

deletenth([], _, _, []).
deletenth([_H | T], N, 1, T) :-
    deletenth(T, N, N, T).
deletenth([H | T], GlobalN, LocalN, [H | T]) :-
    LocalN \= 0,
    TMP is LocalN - 1,
    deletenth(T, GlobalN, TMP, T).

Моя проблема в том, что он не распознает предикат в середине, если он получает параметр LocalN = 1 в процессе рекурсии. Только если вручную так вызвать с терминала. Может быть, мой код вообще не подходит для этой задачи, но эта штука меня продолжает беспокоить. Хотелось бы, чтобы кто-нибудь помог мне с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...