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/