Linkweg: Home / Knobeleien / Der Tresor / Lösung
Der Tresor
Lösung
Der Code lautet: 675941283
Denn:
4 - 3 = 1
3 + 4 = 7
2 · 3 = 6
8 - 5 = 9 / 3
Die Lösung findet man entweder durch geschicktes Ausprobieren oder man beauftragt einen Computer mit der Lösungsfindung. Dieses Problem in einer imperativen Programmiersprache (wie etwa C/C++ oder Java) zu lösen, ist zwar prinzipiell möglich, jedoch aufwändig. Einfacher ist es, eine deklarative Programmiersprache auszuweichen: man füttert den Computer mit den Bedingungen und überlässt es ihm, den Lösungsweg zu finden. Geeignet dazu ist zum Beispiel die logische Programmiersprache Prolog:
| Prolog-Code | |
|---|---|
| 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: |
% Gibt die Listenelemente einer Liste aus writelist([]). writelist([E|R]) :- write(E), writelist(R). % Sucht den Code code :- % Alle Ziffern von 1 bis 9 kommen genau einmal vor permutation([A,B,C,D,E,F,G,H,I],[1,2,3,4,5,6,7,8,9]), % Die vier Bedingungen an den Code F is E - I, B is I + E, A is G * I, D is (H-C) * I, % Ausgabe write('Der Code: '), writelist([A,B,C,D,E,F,G,H,I]), nl, % Weitere Loesungen suchen fail. |
Der Ablauf des Programms sieht dann wie folgt aus (verwendeter Prolog-Interpreter: SWI-Prolog; Zeilen, die mit ?- anfangen sind Benutzereingaben):
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64) Copyright (c) 1990-2008 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). ?- consult(tresor). % tresor compiled 0.00 sec, 3,408 bytes true. ?- code. Der Code: 675941283 false. ?- halt.











