|
Rolf Mertig sagt: > Diese Loesung ist zwar elegant, aber ungefaehr 7 mal langsamer als meine. Geschwindigkeit ist oft sehr wichtig, aber in diesem Fall, wo es ja "nur" darum geht, ein einzelnes Problem zu lösen, betrachte ich die Gesamtzeit, also Denkzeit+Rechenzeit aus wichtiger, und da spielen die 2-3 Sekunden Unterschied keine Rolle. Die Aussage "7 mal langsamer" ist bei einem einzelnen nicht-parametrischen Problem auch etwas reißerisch, denn bei nur einem Meßpunkt kann man genauso gut von "3 Sekunden Unterschied" sprechen, was die Aussage doch etwas relativiert. Die Lösungen, die ich bisher gesehen habe, zeigen m.E. folgendes: 1) In Mathematica kann man eine einfache "brute-force" Suche einfach mit ein paar Zeilen Code durchführen. Die Rechenzeit bewegt sich in der Größenordnung weniger Sekunden. In anderen Systemen wäre die Zeit für Kompilierung oder umständliche Formulierung plus die paar Hundertstelssekunden Rechenzeit insgesamt wohl größer. 2) Es stehen alle Hilfsmittel zur Verfügung, um mittels mehr mathematischem Wissen den Suchbereich drastisch einzuschränken, etwa Markus van Almsicks Methode, die zuläßigen Teilmengen (mit vier verschiedenen Ziffern) elegant zu erzeugen, oder Michael Trotts Idee, die möglichen Nenner (die eine Periodenlänge vier ergeben) aus nur Hundert Kandidaten schnell zu bestimmen. Zur Lösung von Rolf Mertig ist auch noch folgendes zu sagen: (*zur Erinnerung: Do[If[(e 100 + v 10 + e) =!= 0 && (e != v != d !=i), r = RealDigits[N[(e 100 + v 10 + e)/(d 100 + 10 i + d)]]; f = Take[First[r],8]; If[(Take[f, 4] === Drop[f, 4]) && Length[Union[f]]===4 && Length[Union[{e, v, d, i}, f]] === 8 , Print[e,v,e, "/", d,i,d, " = 0,",Sequence@@f,"..."] ] ], {e, 0, 9},{v, 0, 9}, {d, e + 1, 9}, {i, 0, 9} ]//Timing 212/606 = 0,34983498... 242/303 = 0,79867986... *) Zur Bestimmung der periodischen Dezimalbrüche mit Periode 4 verwendet diese Methode numerische Approximation (mit Maschinengenauigkeit). Nun gibt es aber unter allen Brüchen der Form EVE/DID solche, deren Perioden mehrere Hundert beträgt (das Maximum ist z. Bsp. 656/727 mit Periode 726 [es gibt noch 41 andere Fälle]). Es könnte also durchaus vorkommen, daß die ersten vier Dezimalziffern zufällig gleich den zweiten vier sind, ohne daß die Zahl deshalb Periode vier hat. Alle anderen Methoden sind exakt, dafür vielleicht etwas langsamer. Roman Mäder |