- 8 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 11:57:29 ]
- 以下の住所に関する事実
address([bitdiddle, ben], [slumerville, [ridge, road], 10]). address([hacker, alyssa, p], [cambridge, [mass, ave], 78]). address([fect, cy, d], [cambridge, [ames, street], 3]). address([tweakit, lem, e], [boston, [bay, state, road], 22]). address([reasoner, louis], [slumerville, [pine, tree, road], 80]). address([warbucks, oliver], [swellesley, [top, heap, road]]). address([scrooge, eben], [weston, [shady, lane], 10]). address([cratchet, robert], [allston, [n, harvard, street], 16]). address([aull, dewitt], [slumerville, [onion, square], 5]). から、各々近場にいる人について述べる述語livesNearを作りたいのですが、 livesNear(Person1, Person2) :- address(Person1, [Town|Rest1]), address(Person2, [Town|Rest2]), not(same(Person1, Person2)). こう作ってしまう場合、livesNear(P,Q)と問い合わせをすると(Aさん,Bさん) という組み合わせと、(Bさん、Aさん)という入れ替えたものの2つが重複 して出てくることになります。 重複しないようにするにはどうすればいいでしょうか。
|

|