[squeakdev] Ulam spiral
Frank Shearar
frank.shearar at gmail.com
Wed Oct 3 09:29:38 UTC 2012
On 3 October 2012 09:24, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> This is very nice indeed.
>
> What about adding this as an example of good code to the help menu?
>
> Just a workspace like the one 'extending the system'. It would contain
> the code to rebuild the background from scratch. The menu might be
> called 'Create Ulam spiral background'. The would be an adapted
> version of Bert's code.
I guess it's as good a time as any to state that the background of 4.4
_will_ be some variation of the Ulam spiral. If you take a standard
gritty one and gently fuzz it, you get a light grey slightly textured
background that will tile nicely. But I was going to turn the mutated
spiral into a PNG and figure out how to set the background at some
point in the very near future.
> 1) It is short an easy to understand
> 2) The speed is just fine to watch it progressing.
+1. It also has the same kind of hook as a Logo program.
frank
> And maybe Franks solution in addition to illustrate another point.
>
> Bert's code
>
> 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]].
>
>
> It should be adapted to do the following:
>
> 1) set the background to blank
> 2) build the spiral
>
> Hannes
>
> On 10/1/12, Frank Shearar <frank.shearar at gmail.com> wrote:
>> 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/decomposingtheulamspiral
>>>
>>> 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 imagefu. 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 origincentred 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 Squeakdev
mailing list
