StartseiteKnobeleienRätselhafte AdditionLösung

Lösung: Rätselhafte Addition

Rätsel einblenden

Lösung

Ausblenden

Es gibt nur eine mögliche Lösung für dieses Rätsel:

SEND + MORE ———————— MONEY

steht für:

9567 + 1085 ———————— 10652

Zur Lösungsfindung eignet sich entweder geschicktes Ausprobieren oder aber man bedient sich des Computers. Geeignet dazu ist zum Beispiel die logische Programmiersprache Prolog. Dazu formuliert man die Bedingungen, die in der Aufgabenstellung gestellt sind, in Prolog und lässt den Rechner die Lösung finden:

  1. addition :-
  2.   % Alle Ziffern sind unterschiedlich
  3.   permutation([D,E,M,N,O,R,S,Y,_,_],[0,1,2,3,4,5,6,7,8,9]),
  4.   % Die ersten Ziffern sind nicht Null
  5.   S \= 0, M \= 0,
  6.   % Die eigentliche Addition muss gelten
  7.   value([S,E,N,D],Send),
  8.   value([M,O,R,E],More),
  9.   value([M,O,N,E,Y],Money),
  10.   Money is Send + More,
  11.   % Ausgabe
  12.   write(Send), write(' + '), write(More),
  13.   write(' = '), write(Money), nl,
  14.   % Weitere Loesungen suchen
  15.   fail.

  16. % value(List,Value) -- Value ist der Wert von List
  17. value(List,Value) :- value(List,Value,0).
  18. value([],Akku,Akku).
  19. value([Head|Rest],Value,Akku1) :-
  20.   Akku2 is 10*Akku1+Head,
  21.   value(Rest,Value,Akku2).

Der Ablauf des Programms sieht dann unter Verwendung des SWI-Prolog-Interpreters wie folgt aus (Zeilen, die mit ?- beginnen 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(addition). % addition compiled 0.00 sec, 3,640 bytes true. ?- addition. 9567 + 1085 = 10652 9567 + 1085 = 10652 false. ?- halt.

Das Ergebnis wird dabei zweimal ausgegeben, da es für die beiden anonymen Variablen _ in Zeile 3 zwei Permutationen gibt, die vom Interpreter beide berücksichtigt werden.