SEND + MORE = MONEY

Aufgabe:
Diese Aufgabe hat man mir 1966 als Schüler der Hauptschule Tamsweg gestellt. Das heißt, man kann es ohne Computer ausknobeln.
Bei einem Kryptogramm muss an die Buchstaben durch (verschiedene) Ziffern ersetzen.

Programmcode:

Buchstaben:sort(listify({s,e,n,d,m,o,r,e,m,o,n,e,y}));
m:1;
for d:0 thru 9 do
for e:0 thru 9 do
for n:0 thru 9 do
for o:0 thru 9 do
for r:0 thru 9 do
for s:0 thru 9 do
for y:0 thru 9 do
block(
ev(Buchstaben:[d,e,m,n,o,r,s,y]),
if (1000*s+100*e+10*n+d)
+1000*m+100*o+10*r+e
=10000*m+1000*o+100*n+10*e+y then
if cardinality(setify(Buchstaben))= length(Buchstaben) then
print(Buchstaben,1000*s+100*e+10*n+d,"+",1000*m+100*o+10*r+e,
"=",10000*m+1000*o+100*n+10*e+y)
);

Lösung:

[7,5,1,6,0,8,9,2]9567+1085=10652

Achtung: lange Laufzeit!

Maxima Online: wird erst eingearbeitet

Advertisements

Ein Kryptogramm lösen

Gegebenes Kryptogramm:

EINS + EINS = ZWEI

Wenn man die Buchstaben durch passende Ziffern ersetzt, erhält man eine richtige Rechnung. Verschiedene Buchstaben müssen verschiedene Ziffern sein.

Quelle: http://de.wikipedia.org/wiki/Kryptogramm

Programmcode:

for e:0 thru 9 do
for i:0 thru 9 do
for n:0 thru 9 do
for s:0 thru 9 do
for w:0 thru 9 do
for z:0 thru 9 do
block(
ev(Buchstaben:[e,i,n,s,w,z]),
if 2*(1000*e+100*i+10*n+s)=1000*z+100*w+10*e+i then
if cardinality(setify(Buchstaben))= length(Buchstaben) then
print(Buchstaben)
);

Man beachte, dass die Verwendung der Mächtigkeit einer Menge (cardinality) hier vorteilhaft verwendet werden konnte,.

Maxima Online: http://maxima-online.org/?inc=r1496736207
mit Ausgabe von EINS und ZWEI: http://maxima-online.org/?inc=r-792513137

Zur Funktionsweise des Programms siehe: https://casmaxima.wordpress.com/2014/04/02/ein-spanisches-online-maxima/

 

Kleintierhaltung

Aufgabe:

In einem Stall gibt es Kaninchen (x) und Hühner (y).
Man zählt 20 Köpfe (k) und 56 Beine (b)

  1. Man berechne x und y.
  2. Welche anderen Vorgaben für k (Köpfe) und b (Beine) sind denkbar (bis zu einer gewissen Obergrenze)?

Programmcode für Teilaufgabe (1):

g1:x+y=20;
g2:4*x+2*y=56;
l:solve([g1,g2],[x,y]);

Maxima Online: http://maxima-online.org/?inc=r-295002031

Programmcode für Teilaufgabe (2):

Triviale Lösung mit Vielfachen (nun mit x Hühnern und y Kaninchen):

f(k,b):=solve([x+y=k,2*x+4*y=b],[x,y]);
f(20,56);
f(40,112);

Es scheint viele Lösungen zu geben: http://maxima-online.org/?inc=r1375203649
(das „ruft“ nach weiteren Untersuchungen).

 

 

Ziffernsumme einer dreistelligen Zahl

Eine Aufgabenstellung bei www.edhelper.com lautete in deutscher Übersetzung:
(g1) Die Ziffernsumme einer dreistelligen Zahl ist 18
(g2) Die Hunderterstelle ist um 6 größer als das 2fache der Zehnerstelle
(g3) Die Einerstelle ist um 6 größer als das 3fache der Zehnerstelle
Die dreistellige Zahl ist gesucht.

Programmcode:

g1:H+Z+E=18;
g2:H-6=2*Z;
g3:E-6=3*Z;
l:solve([g1,g2,g3],[H,Z,E]);
Zahl:100*H+10*Z+E,l;

Ausführung mit Maxima Online: http://maxima-online.org/?inc=r-144388483

Übungsauftrag:

Zweiergruppen:
Formuliere derartige Aufgabenstellungen für frei gewählte dreistellige Zahlen (mit unterschiedlichen Ziffern).
Das andere Gruppenmitglied soll deine Aufgabenstellungen lösen.

Aufgabe für Fortgeschrittene:

Auch ohne Computer ist nicht schwer, herauszufinden, wie viele dreistellige Zahlen es gibt. Mit Computer ist es auch interessant: http://maxima-online.org/?inc=r-673670430 . Aber, wie viele dreistellige Zahlen mit unterschiedlichen Ziffern gibt es? Die Kombinatorik liefert schnell eine Antwort.
Ich hätte gerne, dass der Computer diese Zahlen aufschreibt.

Der Programmcode dazu:

H:setify(makelist(i,i,1,9));
Z:setify(makelist(i,i,0,9));
E:Z;
zahlenmenge:cartesian_product(H,Z,E);
zahlenliste:listify(zahlenmenge);
verschiedene_ziffern:sublist(zahlenliste,lambda([x],
cardinality(setify(x))=3));
length(verschiedene_ziffern);

Anmerkung: cardinality(M) ist die Mächtigkeit der Menge M. Die Mächtigkeit einer Menge, ist die Anzahl ihrer Elemente. Die Zahl 199 als Liste ist [1,9,9]. Wenn man die Liste zu einer Menge verwandelt, erhält man {1,9}. Da eine Menge eine Zusammenfassung von wohlunterschieden Objekten unserer Anschauung oder unseres Denkens ist, dürfen keine Ziffern mehrfach vorkommen. Die Umwandlung einer Liste x in eine Menge erfolgt mit setify(x).  Die lambda-Funktion berücksichtigt in der Teilliste (sublist) also nur dreistellige Zahlen mit lauter verschiedenen Ziffern.Liste_in_Menge_1

Ausführung mit Maxima Online: http://maxima-online.org/?inc=r-1271358832

Es geht natürlich auch ohne Maxima:

Matthias Praunegger von http://www.d4e.at hat mir dieses Programm (mit einem anderen Algorithmus) geschickt:

matthias