On Fri, 25 May 2007 22:18:32 +0900, Ruby Quiz wrote:
> The three rules of Ruby Quiz:
>
> 1. Please do not post any solutions or spoiler discussion for this quiz
> until 48 hours have passed from the time on this message.
>
> 2. Support Ruby Quiz by submitting ideas as often as you can:
>
> http://www.rubyquiz.com/
>
> 3. Enjoy!
>
> Suggestion: A [QUIZ] in the subject of emails about the problem helps
> everyone on Ruby Talk follow the discussion. Please reply to the
> original quiz message, if you can.
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=-=-=-=-=
>
> by Drew Olson
>
> When I learned about fractals in high school math class, I immediately
> found them fascinating. For those of you unfamiliar with the concept,
> the definition from Wikipedia is as follows: a fractal is "a rough or
> fragmented geometric shape that can be subdivided in parts, each of
> which is (at least approximately) a reduced-size copy of the whole".
>
> At the end of the unit in which we were taught them, the fractal below
> was a test question. In subsequent years, I began drawing it freehand to
> higher and higher levels. The details and patterns that emerge are
> fascinating.
>
> The goal is to create a ruby program which takes the level as an
> argument and then draws the fractal shown below to the specified level.
> The fractal is created by drawing the first level, then repeating the
> pattern such that each base piece is replaced with the fractal from the
> higher level. Thus, to move from level 1 to level 2, we replace each
> line with the shape at level 1. Notice that the position changes as
> well, meaning if the line is vertical we replace it with a vertically
> positioned shape of level 1 (right and left facing also matter). I have
> shown the first 3 levels below (including the base component at level
> 0). Feel free to use the console for output or get fancy with RMagick or
> something similar.
>
> _ <-- Level 0
> _
> _| |_ <-- Level 1
> _
> _| |_
> _| |_ <-- Level 2
> _|_ _|_
> _| |_| |_| |_
>
> _
> _| |_
> _| |_
> _|_ _|_
> _| |_| |_| |_
> _| |_
> _|_ _|_
> _| |_| |_| |_ <-- Level 3
> _| |_
> _|_ _|_
> _| |_|_ _ _ _|_| |_
> _| |_|_|_| |_|_|_| |_
> _|_ _|_|_ _|_|_ _|_
> _| |_| |_| |_| |_| |_| |_| |_
#this is my first solution
#a turtle graphics file for use with any solution to Quiz 104
#shows the whole fractal for 0<=DEPTH<=4
#shows part of the fractal for 5<=DEPTH
DEPTH=(ARGV[1] or 3).to_i
def segment n
if n==0
fd [(360/(3**DEPTH)),3].max
else
segment n-1
lt 90
segment n-1
rt 90
segment n-1
rt 90
segment n-1
lt 90
segment n-1
end
end
#get into a sensible home position
bk 180
rt 90
bk 180
pd
#actually draw the fractal
segment DEPTH
--
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/