aboutsummaryrefslogtreecommitdiff
path: root/02-hub3.rb
diff options
context:
space:
mode:
Diffstat (limited to '02-hub3.rb')
-rw-r--r--02-hub3.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/02-hub3.rb b/02-hub3.rb
new file mode 100644
index 0000000..8750027
--- /dev/null
+++ b/02-hub3.rb
@@ -0,0 +1,34 @@
+require './level'
+require './frame'
+
+class Level
+ interfaces %w(1 2 3)
+ description <<~EOD
+ You are now a three-port hub. Your job is to forward frames from one interface to all the others.
+ EOD
+ clicks 5
+
+ def self.target(frame)
+ case frame.iface
+ when ?1
+ [frame.to(?2), frame.to(?3)]
+ when ?2
+ [frame.to(?1), frame.to(?3)]
+ when ?3
+ [frame.to(?1), frame.to(?2)]
+ else
+ puts "ERR"
+ []
+ end
+ end
+
+ def self.generate
+ frames = {}
+ @@interfaces.each do |iface|
+ next if rand < 0.3
+ frames[@@count.to_s] = Frame.new(iface, "Frame #{@@count}")
+ @@count += 1
+ end
+ frames
+ end
+end