我有一个序幕作业要做:有 5 个人坐在一张来自不同国籍(法语、英语、波兰语、意大利语、土耳其语)的圆桌旁。除了自己的语言,他们每个人都只知道另一种语言。他们坐在圆桌旁,每个人都可以与他们的 2 个邻居交谈(一个邻居用他们的母语交谈,另一个用他们知道的单一外语交谈)。英国人会意大利语,波兰人会法语,土耳其人不会英语。问题是土耳其人懂什么外语?
我只使用子句和谓词做了一些事情,但我走到了死胡同,老师建议最简单的方法是使用列表。
关于该列表将包含什么或任何代码想法的任何想法?
更新(弱逻辑代码):
predicates
knowTheLanguage(symbol,symbol)
knowNotTheLanguage(symbol,symbol)
isNeighbor(symbol,symbol,symbol,symbol)
aTheory(symbol,symbol,symbol,symbol)
anotherTheory(symbol,symbol,symbol,symbol)
clauses
knowTheLanguage(englishman,italian).
knowTheLanguage(polishman,franch).
%native tongues
knowTheLanguage(englishman,english).
knowTheLanguage(frenchman,franch).
knowTheLanguage(polishman,polish).
knowTheLanguage(italianman,italian).
knowTheLanguage(turk,turkish).
knowNotTheLanguage(turk,english).
aTheory(centralPerson, languageCntrlPers, personOnOneSide,languagePrsnOnOneSide) if knowTheLanguage(personOnOneSide,languageCntrlPers)
and not( knowTheLanguage(centralPerson,languagePrsnOnOneSide))
and not(knowNotTheLanguage(centralPerson,languagePrsnOnOneSide)).
anotherTheory(centralPerson, languageCntrlPers, personOnOneSide,languagePrsnOnOneSide) if knowTheLanguage(centralPerson,languagePrsnOnOneSide)
and not( knowTheLanguage(personOnOneSide,languageCntrlPers))
and not(knowNotTheLanguage(centralPerson,languagePrsnOnOneSide)).
isNeighbor(centralPerson, languageCntrlPers, personOnOneSide,languagePrsnOnOneSide) if aTheory(centralPerson, languageCntrlPers, personOnOneSide,languagePrsnOnOneSide)
or
anotherTheory(centralPerson, languageCntrlPers, personOnOneSide,languagePrsnOnOneSide).
更新 - 编程环境:Borland 的 turbo prolog 2.0 '86,'88,我也是 prolog 的完整初学者,所以......我至少要了解代码体之外的程序和解释的完整草图。我处理事情很慢:D