Class: MinerMover::Miner
Instance Attribute Summary collapse
-
#depth ⇒ Object
Returns the value of attribute depth.
-
#partial_reward ⇒ Object
Returns the value of attribute partial_reward.
Attributes inherited from Worker
#debugging, #logging, #timer, #variance
Instance Method Summary collapse
-
#initialize(depth: 5, partial_reward: false, variance: 0, logging: false, debugging: false, timer: nil) ⇒ Miner
constructor
A new instance of Miner.
-
#mine_ore(depth = @depth) ⇒ Object
wrap the above method with logging, timing, and summing.
-
#mine_ores(depth = @depth) ⇒ Object
return an array of integers representing ore mined at each depth.
- #state ⇒ Object
Methods inherited from Worker
#debug, #id, #log, #to_s, #varied
Constructor Details
#initialize(depth: 5, partial_reward: false, variance: 0, logging: false, debugging: false, timer: nil) ⇒ Miner
Returns a new instance of Miner.
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/miner_mover/worker.rb', line 80 def initialize(depth: 5, partial_reward: false, variance: 0, logging: false, debugging: false, timer: nil) @partial_reward = partial_reward @depth = depth super(variance: variance, timer: timer, logging: logging, debugging: debugging) end |
Instance Attribute Details
#depth ⇒ Object
Returns the value of attribute depth.
78 79 80 |
# File 'lib/miner_mover/worker.rb', line 78 def depth @depth end |
#partial_reward ⇒ Object
Returns the value of attribute partial_reward.
78 79 80 |
# File 'lib/miner_mover/worker.rb', line 78 def partial_reward @partial_reward end |
Instance Method Details
#mine_ore(depth = @depth) ⇒ Object
wrap the above method with logging, timing, and summing
107 108 109 110 111 112 113 114 |
# File 'lib/miner_mover/worker.rb', line 107 def mine_ore(depth = @depth) log format("MINE Depth %i", depth) ores, elapsed = Timer.elapsed { self.mine_ores(depth) } total = ores.sum log format("MIND %s %s (%.2f s)", Ore.display(total), ores.inspect, elapsed) total end |
#mine_ores(depth = @depth) ⇒ Object
return an array of integers representing ore mined at each depth
97 98 99 100 101 102 103 104 |
# File 'lib/miner_mover/worker.rb', line 97 def mine_ores(depth = @depth) # every new depth is a new mining operation Array.new(depth) { |d| # mine ore by calculating fibonacci for that depth mined = MinerMover.fib(self.varied(d).round) @partial_reward ? rand(1 + mined) : mined } end |
#state ⇒ Object
92 93 94 |
# File 'lib/miner_mover/worker.rb', line 92 def state super.merge(depth: @depth, partial_reward: @partial_reward) end |