40 lines
559 B
Ruby
40 lines
559 B
Ruby
class Door
|
|
attr_reader :state
|
|
|
|
def initialize
|
|
@state = :closed
|
|
end
|
|
|
|
def close
|
|
@state = :closed
|
|
end
|
|
|
|
def open
|
|
@state = :open
|
|
end
|
|
|
|
def closed?
|
|
@state == :closed
|
|
end
|
|
|
|
def open?
|
|
@state == :open
|
|
end
|
|
|
|
def toggle
|
|
if closed? then open else close end
|
|
end
|
|
|
|
def to_s
|
|
@state.to_s
|
|
end
|
|
end
|
|
|
|
doors = Array.new(100) { Door.new }
|
|
1.upto(100) do |multiplier|
|
|
doors.each_with_index do |door, i|
|
|
door.toggle if (i + 1) % multiplier == 0
|
|
end
|
|
end
|
|
|
|
doors.each_with_index { |door, i| puts "Door #{i+1} is #{door}." }
|