Пролог - предикат для подсчета индекса в списке списка - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть проблема, когда мне нужно создать предикат count_height (B, X, Y), где B - список списков, X - элемент, а Y - индекс элемента в соответствующем списке.Например.

count_height([[b,c,f],[a,d,g],[h,e]],c,H).
H=1
count_height([[b,c,f],[a,d,g],[h,e]],g,H).
H=2.

Предикат также должен работать наоборот.то есть.

count_height([[b,c,f],[a,d,g],[h,e]],X,0).
X = b
X = a
X = h

Это следующее решение, которое я разработал до сих пор.

indexOf([H|_], H, 0). 
indexOf([_|T], E, I):- indexOf(T, E, P), I is P+1.   
count_height([H|T],X,C) :- member(X,H), indexOf(H,X,C). 
count_height([H|T],X,C) :- not(member(X,H)), count_height(T,X,C).

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

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