DMUG-Archiv 1998

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re: Periodischer Dezimalbruch

Da Roman und Rolf bereits zwei schoene Loesungsvorschlaege fuer das
"Eve did talk"-Problem unterbreitet haben, moechte ich nicht nachstehen und  
nun auch meine Idee einreichen. Da Rolf die Geschwindigkeit als Kriterium  
angesprochen hat, habe ich meine Loesung etwas getuned! Ich habe dabei  
nochmal fast einen Faktor 2 herausgekitzelt. Ich hoffe, dass das zur  
Ehrenrettung Mathematica's gegenueber Maple reicht.  :-)

Markus van Almsick


Ansatz:
Ich spiele alle Moeglichkeiten fuer {e,v,d,i} durch.
Dabei beruecksichtige ich den Umstand, dass {e,v,d,i} nicht gleich sein  
duerfen. Es gibt 5040 Moeglichkeiten, die ich in einem Array erstelle.

Needs["DiscreteMath`Combinatorica`"];

Map[Permutations, KSubsets[Range[0,9], 4]]


Sodann scanne ich dieses Array nach folgenden Kriterien (= Filter[]):
a) ist  e < d?  Wenn nicht, waere der Bruch eve/did = 1.talk.....
b) 9999 eve/did = talk gleich eine ganze Zahl.
c) {e,v,d,i,t,a,l,k} sind alle unterschiedlich.

Die Tuple {e,v,d,i}, die den Kriterien (a) - (c) genuegen, schiebe ich in eine
Loesungsmenge.
(Beachte: Ich benutze "reine" Funktionen. d.h.
 statt f[x_] := x^2 und  f[2] ->  4 schreibe ich
       (#^2)&[2]  ->  4.
 Das bringt noch etwas an Zeitvorteil, da die Funktion f nicht definiert
 werden muss.)

Timing[
        Loesung = {};
        Filter[{e_, v_, d_, i_}] :=
                If[
                        IntegerQ[#],
                        If[
                                Length[Union[{e,v,d,i},#]] == 8,
                                AppendTo[Loesung, {{e,v,e},{d,i,d},#}]
                        ]&[IntegerDigits[#]]
                ]&[(9999 (101 e + 10 v)) / (101 d + 10 i)] /; e < d ;
        Scan[Filter, Map[Permutations, KSubsets[Range[0,9], 4]], {2}];
        Loesung
]

{1.46667 Second,
 {{{2, 1, 2}, {6, 0, 6}, {3, 4, 9, 8}},  {{2, 4, 2}, {3, 0, 3}, {7, 9, 8, 6}}}
}

---------------------------------------------------------
Max-Planck-Institut fuer Biophysik,     Frankfurt am Main
Application Consultant,              Wolfram Research Inc.


Antworten:
Re: Periodischer Dezimalbruch
Dr. H.-J. Spitzer, 12.12.1996
Verweise:
Periodischer Dezimalbruch
Franz Szabo, 08.12.1996

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:44