簡體   English   中英

Prolog的新功能-列表挑戰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM