Prolog-Rätsel < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Aufgabe | Lösen Sie das folgende Rätsel. Sie soll nur die gegebenen Fakten und Regeln zum Lösen des Rätsels, aber keine von Ihnen zusätzlich herausgefundenen Fakten enthalten.
Gestern Nacht wurde der Tresor einer Bank ausgeraubt. Finden Sie unter
den fünf Männern, die die Kombination kennen, den heraus, der gestern
abend allein war. Es gibt folgende Hinweise:
2 Mr. Jones ist dick und fährt einen VW.
Mr. Smith fährt einen Jaguar und ist Engländer.
Der dünne Mann fährt einen Fiat.
Mr. Poole ist Schotte.
Mr. Kent trägt einen blauen Anzug.
Der dicke Mann trägt einen schwarzen Anzug.
Der dünne Mann ist Ire.
Mr. Bright trägt einen grünen Anzug und fährt einen Renault.
Der kleine Mann ist Schotte.
Der dünne Mann trägt einen blauen Anzug.
Der Mann normaler Statur ist Kanadier.
Der Mann im grauen Anzug fährt einen Mazda.
Der Mann im schwarzen Anzug ist Waliser.
Der große Mann trägt einen braunen Anzug.
Letzte Nacht war der Waliser mit dem Kanadier zusammen.
Letzte Nacht war der große Mann mit dem Mazdafahrer zusammen. |
Hallo liebe Kommilitionen!
In unserem Programmiermodul müssen wir dieses RÄtsel in PROLOG umsetzen. Es soll nur eine Lösung herauskommen, aber ich bekomme mit meinem Programm immer wieder false! :-/ Vielleicht könnt ihr mir da weiterhelfen ?!?
/* person(NAME,NATION,KÖRPER,KLEIDUNG,AUTO,ALLEIN) */
person(X) :-
X=[_,_,_,_,_,_],
member([jones,_,dick,_,vw,_],X),
member([smith,englaender,_,_,jaguar,_],X),
member([_,_,duenn,_,fiat,_],X),
member([poole,schotte,_,_,_,_],X),
member([kent,_,_,blauerAnzug,_,_],X),
member([_,_,dick,schwarzerAnzug,_,_],X),
member([_,ire,duenn,_,_,_],X),
member([bright,_,_,gruenerAnzug,renault,_],X),
member([_,schotte,klein,_,_,_],X),
member([_,_,duenn,blauerAnzug,_,_],X),
member([_,kanadier,normal,_,_,_],X),
member([_,_,_,grauerAnzug,mazda,_],X),
member([_,waliser,_,schwarzerAnzug,_,_],X),
member([_,_,gross,braunerAnzug,_,_],X),
not(member([_,waliser,_,_,_,nichtAllein],X)),
not(member([_,kanadier,_,_,_,nichtAllein],X)),
not(member([_,_,gross,_,_,nichtAllein],X)),
not(member([_,_,_,_,mazda,nichtAllein],X)),
member([_,_,_,_,_,allein],X).
Wäre wirklich dankbar, denn ich glaube, bei mir steckt da einfach ein riesiger Denkfehler drin.. :)
LG
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:25 So 19.06.2011 | Autor: | elchzucht |
Musst auch wie ich wahrscheinlich bald abgeben. Hab aber auch keine funktionierende Lösung bis jetzt.
Dein Denkfehler ist, dass X eine Liste ist, die die 5 Lösunglisten enthält. Also es müssten anstellen der 6 Unterstriche 5 sein und das mit dem not ist humburg. Ich zeig dir mal, was ich bis jetzt hab:
run:-
X=[_,_,_,_,_],
member([jones,dick,vw,_,_,_],X),
member([smith,_,jaguar,englaender,_,_],X),
member([_,duenn,fiat_,_,_],X),
member([poole,_,_,schotte,_,_],X),
member([kent,_,_,_,blauenanzug,_],X),
member([_,dick,_,_,schwarzenanzug,_],X),
member([_,duenn,_,ire,_,_],X),
member([bright,_,renault,_,gruenenAnzug,_],X),
member([_,klein,_,schotte,_,_],X),
member([_,duenn,_,_,blauenanzug,_],X),
member([_,normal,_,kanadier,_,_],X),
member([_,_,mazda,_,grauenanzug,_],X),
member([_,_,_,waliser,schwarzenanzug,_],X),
member([_,gross,_,_,braunenanzug,_],X),
member([_,_,_,waliser,_,a],X),
member([_,_,_,kanadier,_,a],X),
member([_,gross,_,_,_,a],X),
member([_,_,mazda,_,_,a],X),
member([_,_,_,_,_,a],X),
write(X),nl.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:13 Di 21.06.2011 | Autor: | cycore |
Hallo elchzucht, es freut mich dir mitteilen zu dürfen, dass deines an sich läuft..Es liegt nur ein kleiner Tippfehler vor in der Zeile 5:
member([_,duenn,fiat_,_,_],X),
da fehlt ein Komma, nicht wahr ;)
Ansonsten ist das ganze in der letzten Komponente unterbestimmt und ich verstehe den Sinn und Zweck der Zeile
member([_,_,_,_,_,a],X),
nicht?
gruß cycore
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:20 Do 23.06.2011 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|