DMUG-Archiv 2008

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Aufgabe::Gib mir Hundert

Hallo Manfred,

es sollte vernünftigerweise (try lösung[-2])

lösung[n_Integer] := <expr> /; 1 < n <= einWertDerNochGeht

definiert werden, denn bei n = 100 gibt es Fehlermeldungen:

In[1]:= (* Lösung Engelskirchen für {2, ..., n}, 6. 3. 2008 *)
lösung[n_] :=
 Map[# Range[2, n] &,
  Select[Tuples[{-1, 1}, n - 1], (#.Range[2, n] == n) &]]

In[12]:= lösung[100]

During evaluation of In[12]:=
Tuples::"toomany" :  "The length of the output of Tuples[{-1, 1}, 99] \
should be a machine integer." >>
<snip>
Out[12]= Tuples[]

dann nach einigen weiteren Versuchen:

In[15]:= lösung[30]


No more memory available.
Mathematica kernel has shut down.
Try quitting other applications and then retry.

.. nicht gut, der Gebrauch von Tuples ist zwar "sicher", aber hochgradig ineffizient (abgesehen davon, dass die lösung[] nichts mit der Aufgabe zu tun hat). Was auf Ihrem Rechner die grösste Maschinenganzzahl ist, kann man sich überlegen (auf 32 Bit Rechnern: 2^32 - 1) und es experimentell bestätigen:

In[55]:= MemoryConstrained[1 + 1, 2^32]

During evaluation of In[55]:= MemoryConstrained::ipnfm: Positive \
machine-size integer or Infinity expected at position 2 in \
MemoryConstrained[1+1,2^32]. >>

Out[55]= MemoryConstrained[1 + 1, 2^32]

In[56]:= MemoryConstrained[1 + 1, 2^32 - 1]
Out[56]= 2

Da Tupels[{-1, 1}, n - 1] _nur_ Length[{-1, 1}]^(n - 1) Elemente erzeugt, muss n - 1 < 32 sein. Der Rechner hat aber viel weniger Memory frei, und wenn Sie etwa 400 MB bereithalten können, dann funktioniert

In[60]:= MemoryConstrained[lösung[15], 400 1024 1024] // Length
Out[60]= 331

noch, jedoch

In[62]:= MemoryConstrained[lösung[16], 400 1024 1024]

Out[62]= {}

nicht mehr (obwohl kein $Aborted kommt ...).

Gruss
Udo.


On Thu, 06 Mar 2008 12:04:23 +0100, Manfred Engelskirchen <engelskirchen@XXXXXXX.de> wrote:

lösung[n_]:=Map[# Range[2,n]&,Select[Tuples[{-1,1},n-1],(#.Range[2,n]==n)&]]



--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html