Im “PatzBlatt”, der Zeitschrift der Einzelmeisterschaften der Schachjugend NRW, fand sich letzte Woche folgendes Rätsel.
Man kombiniere die Zahlen 1, 5, 6 und 7 in beliebieger Reihenfolge mit den Grundrechenarten um als Ergebnis 21 zu erhalten. Klammern setzen ist natürlich erlaubt. Wie geht das?
Die theoretisch durchaus interessante Lösung habe ich mit Hilfe eines Python-Skripts gefunden. Nach einigem “Kopfrechnen” und logischen Schlüssen darauf zu stoßen ist aber mit Sicherheit eleganter und wertvoller. Wenngleich das nicht ganz einfach ist möchte ich euch diese Knobelei nicht vorenthalten.
Viel Spaß beim Kopfzerbrechen!
Interessantes Rätsel, zerbreche mir nun schon eine Weile den Kopf, mal sehen, ob ich es irgendwann knacken kann …
hi, würdest du das script veröffentlichen? bin grad dabei, python zu lernen… :-) Danke!
Hallo Frank.
Das würde ich sehr gerne tun, blöderweise habe ich das Script schon gelöscht..
Besonders elegant war es aber ohnehin nicht, es bestand lediglich aus einigen for-Schleifen, die sämtliche Permutationen der Zahlen und die Rechenzeichen sowie die Klammersetzung mit bis zu zwei Klammerpaaren abdeckten.
Innerhalb wurde das ganze dann als String zusammengesetzt und anschließend mit eval() überprüft, ob das Ergebnis 21 war.
Das Problem war dann noch die Divison durch Null, die durchaus in dem String auftauchte und mit einer try-except-Anweisung ausgefiltert werden musste.
Bei weiteren Fragen erläutere ich dir das auch gerne nochmal genauer.
Ein, meiner Meinung nach, sehr gutes Tutorial zu Python ist übrigens “A Byte of Python”.
Es gibt auch eine deutsche Überstzung.
Damit habe auch ich mir meine Kentnisse erworben.
Die Aufgabe ist interresant aber nicht sonderlich schwer :P — falls man es mit einem script löst ich habe das mit vbscript gemacht und die Lösung damit recht schnell gefunden — eine Mathematische Lösung wüsste ich jedoch auch gerne da diese mir interresanter scheint …
Hallo Frank (und allen anderen, die an dem Python-Script interessiert sind),
zufällig habe ich heute das Script wiedergefunden – den Sicherheitskopien von gedit als versteckte Dateien sei Dank.
Habe es sofort hochgeladen, du findest das Script unter http://stuff.florian-severin.de/downloads/patzblatt.py