Я пытаюсь сделать счетчик из следующего кода:Создание счетчика Пролог
contador([], 0,[]).
contador([via(A,_,_)|R], Tot,Regiao):-
cidade(A,_,_,Reg1),Reg1==Regiao,
Tr is Tot + 1,
contador(R,Tr,Regiao).
Учитывая формат моего списка и Cidade:
L=[via(porto,lisboa,_),via(braga,faro,_),via(guimaraes,santarem,_)]
cidade(lisboa,_,_,A)
Почему это не работает?
cidade(porto,portugal,40,litoral).
cidade(braga,portugal,350,interior).
cidade(guimares,portugal,40,litoral).
cidade(alverca,portugal,30,valedotejo).
cidade(santarem,portugal,25,valedotejo).
cidade(faro,portugal,20,litoral).
cidade(sevilha,espanha,60,interior).
С помощью этого списка:
A = [via(porto, braga, 5), via(braga, guimaraes, 9), via(guimaraes, alverca, 7), via(alverca, faro, 10)] ;
Я пытаюсь сделать следующее:
?-contador(A,Tot,litoral).
false.
Моя цель состоит в том, чтобы сосчитать города, которые имеют A(cidades(_,_,_,A))
в качестве параметра.
Показать полный код, включая факты базы данных и запрос, который вы пытаетесь запустить. –
Что произойдет, если 'Regiao' и' Reg1' отличаются? – false
Он должен пропустить этот элемент списка, а не увеличивать Tot и перейти к следующему – sirsomething