Заменить каждый экземпляр списка другим ОДИН на ОДИН в Прологе - PullRequest
0 голосов
/ 28 апреля 2018

Итак, у меня есть программа, которая должна заменить каждый экземпляр элемента в списке другим, но ОДИН ПО ОДНОМУ.

* 1003 Е.Г. *

change_element(5,[1,5,9,12,5,6],3,X). should give 
X = [1,3,9,12,5,6] and 
X = [1,5,9,12,3,6]

Таким образом, он заменяет первые 5 на 3, затем во втором выводе, первые 5 остаются 5, а второй меняется на 3.

Мне удалось реализовать код для изменения первого элемента, но код завершается после этого. Не идет ко второму элементу.

change_element(A,[A|As],B,[B|As]).
change_element(A,[E|As],B,[E|Bs]):-
   dif(A, E),
   change_element(A,As,B,Bs).

Есть идеи, что мне делать по-другому, чтобы получить желаемый результат?

1 Ответ

0 голосов
/ 28 апреля 2018

просто продолжить после матча, сохранив старый элемент:

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