プロローグの宿題があります。さまざまな国籍 (フランス語、英語、ポーランド語、イタリア語、トルコ語) の円卓に 5 人が座っています。彼らはそれぞれ、自分の言語以外に 1 つの言語しか知りません。彼らはそれぞれが2人の隣人と話すことができるように円卓に着きます(1人の隣人とは母国語で話し、もう1人は彼らが知っている1つの外国語で話します)。イギリス人はイタリア語を知っていて、ポーランド人はフランス語を知っていて、トルコ人は英語を知らない。問題は、トルコ人が知っている外国語は何語かということです。
節と述語だけを使って何かをしたことがありますが、行き止まりになりました。先生は、最も簡単な方法はリストを使用することだと提案しました。
そのリストに何が含まれるか、またはコードのアイデアについて何か考えはありますか?
更新 (弱いロジック コード):
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).
更新 - プログラミング環境: ボーランドによるターボ プロローグ 2.0 '86、'88、また私はプロローグの完全な初心者なので...少なくともプログラムの完全なスケッチとコード本体の外側の説明を高く評価します。私は物事をゆっくりと処理します:D