[squeak-dev] Ulam spiral

Frank Shearar frank.shearar at gmail.com
Mon Oct 1 19:06:46 UTC 2012


On 1 October 2012 16:55, Bert Freudenberg <bert at freudenbergs.de> wrote:
> Frank posted some nice code on his blog:
> http://www.lshift.net/blog/2012/09/27/decomposing-the-ulam-spiral
>
> Couldn't help myself coming up with a simpler (admittedly less efficient) version:
>
>         Display restoreAfter: [
>                 size := 400 squared.
>                 primes := (Integer primesUpTo: size) asSet.
>                 step := 1.
>                 length := 1.
>                 pen := Pen new turn: 90.
>                 [step < size] whileTrue: [
>                         2 timesRepeat: [
>                                 length timesRepeat: [
>                                         pen fillColor: ((primes includes: step)
>                                                 ifTrue: [Color black]
>                                                 ifFalse: [Color white]).
>                                         pen go: 1.
>                                         step := step + 1].
>                                 pen turn: -90].
>                         length := length + 1]].

I bow before your image-fu. The main thing I wanted to show was the
decomposition of the problem into various bits. Also, I hadn't
considered the idea of wrapping up the number line before, so needed
to share that tiny moment of mathematical insight.

For origin-centred parts of the Ulam spiral, you might well have
something more efficient. Splitting up the problem into a (random
access!) traversal only comes into its own when you can't use the
intuition of a turtle going round and round in a square spiral. (But I
did use that intuition in figuring out the offsets from the corners.)

frank

> - Bert -
>
>
>


More information about the Squeak-dev mailing list