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/