Aufgabe:
Ein gegebenes Kryptogramm soll entschlüsselt werden. Es lautet: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
Code 01:
for e:1 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:1 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,1000*e+100*i+10*n+s,1000*z+100*w+10*e+i)
);
Code 02:
ziffern:setify(makelist(i,i,0,9))$
zaehler:0$
disp([„#“,EINS,ZWEI])$
for e in setdifference(ziffern,{0}) do
for i in setdifference(ziffern,{e}) do
for n in setdifference(ziffern,{e,i}) do
for s in setdifference(ziffern,{e,i,n}) do
for w in setdifference(ziffern,{e,i,n,s}) do
for z in setdifference(ziffern,{0,e,i,n,s,w}) do
if 2*(1000*e+100*i+10*n+s)=1000*z+100*w+10*e+i then block(
ev(zaehler:zaehler+1),
disp([zaehler,1000*e+100*i+10*n+s,1000*z+100*w+10*e+i])
)$
wxMaxima:

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