我試圖做出反擊了以下代碼:創建一個計數器的Prolog
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