Einsteinrätsel Prolog

dark_inf

Redshirt
Mitglied seit
13.12.2012
Beiträge
1
Renomée
0
Hallo, ich soll folgende Variante des Einstein-Rätsels in Prolog lösen:
In Hafen befinden sich fünf Schiffe. Ein Schiff kann jeweils nach Hamburg, Manila,
Marseille, Genua oder Port Said fahren (Zielort), die Fahne von England, Frankreich,
Griechenland, Brasilien oder Spanien tragen, mit Tee, Kaffee, Kakao, Reis oder Korn
beladen sein (Fracht), links oder rechts vom anderen Schiff im Hafen liegen (Position),
in Farbe schwarz, blau, grün, rot oder weiß gestrichen sein, und um 5, 6, 7, 8 oder 9 Uhr
abfahren.
Folgendes ist bekannt:
• das griechische Schiff fährt um 6 Uhr ab
• das griechische Schiff ist mit Kaffee beladen
• das in der Mitte stehende Schiff ist schwarz
• das englische Schiff fährt um 9 Uhr ab
• das französische Schiff ist blau
• das französische Schiff liegt links von dem Schiff, das Kaffee befördert
• rechts von dem Schiff mit Kakao ist das Schiff, das nach Marseille geht
• das brasilianische Schiff geht nach Manila
• das grüne Schiff ist neben einem Schiff, das mit Reis beladen ist
• das Schiff nach Genua fährt um 5 ab
• das spanische Schiff fährt um 7 ab
• das spanische Schiff ist rechts von einem Schiff, das nach Marseille geht
• das rote Schiff geht nach Hamburg
• das weiße Schiff ist neben einem Schiff, das um 7 losfährt
• ein Schiff am Rand (also: äußerst links oder rechts) ist mit Korn beladen
• das schwarze Schiff fährt um 8 ab
• das Schiff mit Korn liegt neben einem Schiff mit Reis
• das Schiff nach Hamburg fährt um 6 ab.
Welches Schiff ist mit Tee beladen? Welches Schiff fährt nach Port Said?

Ich habe bis jetzt folgendes, was irgendwie zu keiner Lösung führt:

% Schiffe sind Listen von der Form [Zielort, Fahne, Fracht, Farbe, Abfahrt]

% Hilfsprädikate
mittleres(M,[_,_,M,_,_]).
links(A,B,[A|[B|_]]).
links(A,B,[_|R]):-links(A,B,R).
neben(A,B,L):-links(A,B,L);links(B,A,L).
erstes(E,[E|_]).
letztes(L,[_|L]).
rand(R) :- erstes(R);letztes(R).

% Informationen verarbeiten
loese :-
X = [_,_,_,_,_],
member([_,Griechenland,_,_,6],X),
member([_,Griechenland,Kaffee,_,_],X),
mittleres([_,_,_,Schwarz,_],X),
member([_,England,_,_,9],X),
member([_,Frankreich,_,Blau,_],X),
links([_,Frankreich,_,_,_],[_,_,Kaffee,_,_],X),
links([_,_,Kakao,_,_],[Marsaille,_,_,_,_],X),
member([Manila,Brasilien,_,_,_],X),
neben([_,_,_,Gruen,_],[_,_,Reis,_,_],X)
member([Genua,_,_,_,5],X),
member([_,Spanien,_,_,7],X),
links([Marsaille,_,_,_,_],[_,_,Spanien,_,_],X),
member([Hamburg,_,_,Rot,_],X),
neben([_,_,_,Weiss,7],[_,_,_,_,_],X),
rand([_,_,Korn,_,_],X),
member([_,_,_,Schwarz,8],X),
neben([_,_,Korn,_,_],[_,_,Reis,_,_],X),
member([Hamburg,_,_,_,6],X).
 
Zurück
Oben Unten