Willkommen auf www.sudokurechner.de.vu

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.