[英]New to Prolog - challenge with lists
首先,對於英語可能不是我的母語,我可能會犯的任何錯誤我深表歉意。
因此,我決定自己一個人學習Prolog,並且遇到了這種“挑戰”。
我有這個關於電視節目的數據庫。 它具有以下謂詞:
人(PERSON_ID,名稱)。
顯示(Show_id,名稱)。
參與(PERSON_ID,Show_id,活動)。
我要找出的是2個人之間的關系...我必須這樣寫一個目標:network(Person1,Person2),給定2個人的名字(Person1,Person2)還會返回另外2個人的名字people,Person3和Person4-Person1在任何表演中都與Person3合作,Person2與Person4合作,而Person3和Person4都一起合作。
我列出了Person1參加過的所有演出的清單,然后列出了Person2參加過的所有演出的清單。
我的問題是如何從這里繼續。 我考慮過列出一個清單,其中列出了在Person1中參加過演出的所有人員,並在另一個列表中列出了所有在Person2中進行過演出的人員,然后嘗試找出是否所有Person1中的人員與某人一起工作,如果某人已經與Person2一起工作的人列表中的某人一起工作。
誰能給我一些解決方法的建議? 謝謝!!
在序言中沒有“回報價值”之類的東西
因此,您實際上必須寫一個謂詞,例如
網絡(PERSON1,PERSON2,Person3可能,Person4)。
第一步是編寫謂詞work_with(Person1,Person2)
就像是:
worked_with(Person1,Person2):-
participates(Person1,X,_),
participates(Person2,X,_),
Person1 \= Person2.
之后,網絡謂詞將類似於
network(P1,P2,P3,P4):-
worked_with(P1,P3),
worked_with(P2,P4),
worked_with(P3,P4).
但是,該謂詞使用ID代替名稱作為輸入; 您只需要編寫一個包裝即可進行解碼。 我認為您可以嘗試自己將其寫為練習:b
順便說一句,如果您才剛剛開始學習序言,我真的不認為有理由嘗試類似的事情。 首先嘗試更簡單的方法來掌握序言的行為方式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.