Aufgabe:
Mathematischer Hintergrund:
In der Grundschule haben wir schon das dezimale Zahlensystem kennengelernt und die Addition solcher Zahlen. Gleichungen sind spätestens in der Sekundarstufe I wichtig geworden.
Code:
zahl1:[h,o,u,s,e]; zahl2:[c,a,s,t,l,e]; zahl3:[h,o,l,m,e,s]; ziffern:setify(flatten([zahl1,zahl2,zahl3]))$ f5:[10^4,10^3,10^2,10^1,10^0]$ f6:[10^5,10^4,10^3,10^2,10^1,10^0]$ gleichung:zahl1.f5+zahl2.f6=zahl3.f6$ ziffern:{0,1,2,3,4,5,6,7,8,9}$ zaehler:0$ disp("[#. [a,c,e,h,l,m,o,s,t,u]]")$ for a in ziffern do for c in setdifference(ziffern,{0,a}) do for e in setdifference(ziffern,{a,c}) do for h in setdifference(ziffern,{0,a,c,e}) do for l in setdifference(ziffern,{a,c,e,h}) do for m in setdifference(ziffern,{a,c,e,h,l}) do for o in setdifference(ziffern,{a,c,e,h,l,m}) do for s in setdifference(ziffern,{a,c,e,h,l,m,o}) do for t in setdifference(ziffern,{a,c,e,h,l,m,o,s}) do for u in setdifference(ziffern,{a,c,e,h,l,m,o,s,t}) do if is(ev(gleichung))then block( ev(zaehler:zaehler+1), disp([zaehler,[a,c,e,h,l,m,o,s,t,u]]) )$
Mathematischer Hintergrund:
Hier wird sogar die Mengelehre verwendet. Um die Anzahl der Berechnungen in einem vertretbaren Rahmen und damit die Rechenzeit niedrig zu halten, wird in jeder der geschachtelten Schleifen die Differenzmenge verwendet. Es werden damit Permutationen der möglichen Ziffern iteriert und führen Nullen ausgeschlossen. Wenn man das nicht tut, würden 10 Milliarden Durchläufe der Schleifen notwendig. Bei der Formulierung der Gleichung wird die Skalarmultiplikation von Vektoren verwendet.
wxMaxima:

Vroomlab:

Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.