------ art_17818_33254288.1173618548615
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Greetings and Salutations to each and all!
This is my first time submitting to the QUIZ. Please critique, I'm still
learning Ruby, and TASM at school is messing with my brain (can't think
rubyly).
Here's the code:
class Snowflake
attr_reader :grid, :vapor
def initialize (y_size$, x_size0, vapor_percent0)
@y_size size/2*2 #this should take care of those odd numbers
@x_size size/2*2
@vapor_percent
por_percent
@vacuum "
@vapor "
@ice "
@offset create_grid
end
def create_grid
@grid ¨Âáù®îå÷¨Àùßóéúå©ûÁòòáù®îå÷¨Àøßóéúå© @grid.collect! do |row|
row.collect! do |square|
rand(100) < @vapor_percent ? @vapor : @vacuum
end
end
@grid[@y_size/2][@x_size/2] ce
end
def check_neighborhoods
@offset @offset +1)%2
@grid.collect!{|row| row.push(row.slice!(0))}.push(@grid.slice!(0)) if
@offset 1 #torus me!
(0...@y_size).step(2) do |i|
(0...@x_size).step(2) do |j|
neighborhood grid[i][j], @grid[i][j+1], @grid[i+1][j],
@grid[i+1][j+1]]
if !neighborhood.include?(@vapor)
elsif neighborhood.include?(@ice)
#there's got to be a rubyer way of doing this...
@grid[i][j] ce if @grid[i][j] @vapor
#top left corner
@grid[i][j+1] ce if @grid[i][j+1] @vapor #one
right
@grid[i+1][j] ce if @grid[i+1][j] @vapor #one
down
@grid[i+1][j+1] ce if @grid[i+1][j+1] @vapor #right
and down
elsif rand(2)
@grid[i][j], @grid[i][j+1], @grid[i+1][j], @grid[i+1][j+1] @grid[i+1][j], @grid[i][j], @grid[i+1][j+1], @grid[i][j+1]
else #It's the correct sequence, maybe... I think...
@grid[i][j], @grid[i][j+1], @grid[i+1][j], @grid[i+1][j+1] @grid[i][j+1], @grid[i+1][j+1], @grid[i][j], @grid[i+1][j]
end
end
end #pop is to push, as slice!(0) is to ???. Many thanks to James
Edward Gray: flip the data!
@grid.reverse!.collect!{|row| row.reverse!.push(row.slice!
(0)).reverse!}.push(@grid.slice!(0)).reverse! if @offset
end
def to_s
@grid.collect{|row| row.join}.join("\n")
end
end
s owflake.new(18,18,10)
while s.grid.collect{|row| true if row.include?(s.vapor)}.include?(true)
puts s
5.times do puts end
sleep(0.1)
s.check_neighborhoods
end
puts s
in Running through the finish line
**
* *
* * *
* **
** **
**
*** *
***
* *
* *
*
*
ßÅ
------ art_17818_33254288.1173618548615--