Das folgende Beispiel stammt angeblich von Albert Einstein. Dazu soll er die Vermutung geäußert haben, dass nur ca. 2% der Menschen dieses Problem lösen könnten. Wir wissen aber nicht, ob beides wirklich stimmt.
Wie dem auch sei; mittels der logischen Programmierung ist die Lösung fast ein Kinderspiel. Wir verwenden hier die Sprache Prolog. Die Lösung ergibt sich praktisch 1:1 aus der wörtlichen Formulierung des Problems. Hier ist nun das Problem:
Wer trinkt Wasser und wem gehört das Zebra?
Hier die Lösung in Prolog: % Prolog-Code |
|
% Dem Prädikat werWohntWo() muss nur noch klar sein, was die Begriffe erstes, mittleres, links % und benachbart bedeuten: |
|
erstes(E, [E|_]). mittleres(M, [_,_,M,_,_]). links(A, B, [A|[B|_]]). links(A, B, [_|R]):- links(A, B, R). benachbart(A, B, X):- links(A, B, X); links(B, A, X). |
% prädikat erstes % Prädikat mittleres % Prädikat links % Prädikat benachbart |
Das Programm führt nach Konsultation zu folgender Ausgabe: |
Seien Sie ehrlich! Hätten Sie das selbst herausbekommen? > zurück
Übrigens: Falls Sie noch kein Prolog-System haben sollten, hier können Sie eines bekommen:
> SWI-Prolog.