EVE/DID=0.talktalk...
Man kann auch mit der rechten Seite beginnen:
Der Wert der Bruches ist talk/9999. Von allen Möglichkeiten filtert
man dann die aus, die aus einem dreistelligen Zähler und Nenner bestehen,
wobei die Ziffern EVDITALK alle verschieden sind, was zwar nicht in
der Aufgabenstellung steht, aber in solchen Problemen meist angenommen
wird.
Damit findet man nur die gekürzten Lösungen, wo also EVE und DID keinen
gemeinsamen Teiler haben. Die erste Lösung von Rolf Mertig ist nicht
gekürzt. Werden nur gekürzte Lösungen zugelassen, ist die Lösung eindeutig.
Hilfsfunktion, die führende Nullen hinzufügt, so daß die Ziffernliste
mindestens die Länge drei hat:
In[1]:= fill3[n_Integer] := With[{z=IntegerDigits[n]},
Join[Table[0,{Max[0,3-Length[z]]}], z]]
Bestimme Ziffern von Zähler, Nenner, und der rechten Seite:
In[2]:= digs[b:{t_,a_,l_,k_}] := With[{r=(1000t + 100a + 10l + k)/9999},
{fill3[Numerator[r]], fill3[Denominator[r]], b}]
Alle Folgen von vier Ziffern:
In[3]:= Flatten[Array[{##}&, {10,10,10,10},0], 3] // Short
Out[3]//Short= {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 2}, <<9996>>,
> {9, 9, 9, 9}}
Die dazugehörigen Listen {E,V,E}, {D,I,D},{T,A,L,K}:
In[4]:= digs /@ % // Short
Out[4]//Short= {{{0, 0, 0}, {0, 0, 1}, {0, 0, 0, 0}}, <<9999>>}
Alle "guten", läßt sich elegant mit Pattern Matching lösen:
In[5]:= Cases[%, {{e_,v_,e_},{d_,i_,d_},{t_,a_,l_,k_}}/;
e!=v!=d!=i!=t!=a!=l!=k]
Out[5]= {{{2, 4, 2}, {3, 0, 3}, {7, 9, 8, 6}}}
(*also 242/303 = 0.7986... *)
In[6]:= $Version
Out[6]= Solaris 3.0 (September 27, 1996)
Roman Mäder
|