Re: simplifying ulam spiral code
- To: mathgroup at smc.vnet.net
- Subject: [mg56478] Re: simplifying ulam spiral code
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Tue, 26 Apr 2005 21:52:33 -0400 (EDT)
- Organization: The University of Western Australia
- References: <d4cmlr$39e$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Further to my previous message, improved code for Ulam's spiral appeared
in the third issue of The Mathematica Journal, 1(3): 57 (1991). It used
IntegerSpiral[n_] := {Re[#],Im[#]}& /@
Fold[Join[#1, Last[#1]+I^#2 Range[#2/2]]&, {0}, Range[n]]
and explained that
the idea is that the length of the limbs of the spiral follow the
pattern 1,1,2,2,3,3,4,4,5,5,... and that each limb is at a 90 degree
angle to the previous limb (multiplication by I in the complex plane).
This is also a nontrivial use of Fold in the sense that the second
argument to Fold is really used.
Also, instead of using Pick, to select those points that have prime
index from, say
spiral = IntegerSpiral[60];
one can use
primes = spiral[[ Prime[Range[PrimePi[Length[spiral]]]] ]];
Cheers,
Paul
--
Paul Abbott Phone: +61 8 6488 2734
School of Physics, M013 Fax: +61 8 6488 1014
The University of Western Australia (CRICOS Provider No 00126G)
35 Stirling Highway
Crawley WA 6009 mailto:paul at physics.uwa.edu.au
AUSTRALIA http://physics.uwa.edu.au/~paul