Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Fwd: Please Forward: Ruby Quiz Submission
James Gray
5/27/2007 5:19:00 PM
Begin forwarded message:
> From: Wolfgang Seeberg <wolfgang.seeberg@yahoo.com>
> Date: May 26, 2007 1:59:23 PM CDT
> To: submission@rubyquiz.com
> Subject: Please Forward: Ruby Quiz Submission
>
> # Usage: ruby -s fractal.rb [-depth=4] [-plotter=[/bin/gnuplot]]
> # Output: coordinates of a polygon, goes directly to gnuplot
> # if available, or stdout.
> class Fractal
> def initialize(depth = nil, plotter = nil)
> @depth = (depth || 3).to_i
> plotter ||= "/usr/bin/gnuplot"
> if test(?x, plotter)
> @plotter = IO.popen(plotter, "w")
> @plotter.printf "set size ratio -1 \n plot '-' w l\n"
> else
> @plotter = STDOUT
> end
> @x = @y = @angle = 0 # coordinates & orientation of pen
> @cos = [1, 0, -1, 0] # right angle = 100% = 1
> @sin = [0, 1, 0, -1]
> @line = "L"
> @production = "L+L-L-L+L"
> #@production = "L-L+L+L-L+L-L-L+L"
> end
>
> def plot()
> @plotter.printf "%d %d\n", @x, @y
> end
>
> def execute(commands, depth)
> commands.split("").each do | cmd |
> if (cmd != @line) # + or -
> @angle = @angle.send(cmd, 1) % 4
> elsif (depth > 0)
> execute(@production, depth - 1)
> else
> @x += @cos[@angle]
> @y += @sin[@angle]
> plot()
> end
> end
> end
>
> def main()
> plot()
> execute(@line, @depth)
> if @plotter != STDOUT
> @plotter.printf "e\n"
> STDERR.printf "%s", " hit <Return> to exit. "
> gets
> end
> end
> end # class Fractal
>
> Fractal.new($depth, $plotter).main()
>
> __END__
>
>
>
>
>
>
> ______________________________________________________________________
> ______________Be a better Globetrotter. Get better travel answers
> from someone who knows. Yahoo! Answers - Check it out.
>
http://answers.yahoo.com/dir/?link=list&sid...
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Fwd: Please Forward: Ruby Quiz Submission
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password