Module: PuzzleGenerator
- Defined in:
- lib/puzzle_generator.rb,
lib/puzzle_generator/map.rb,
lib/puzzle_generator/misc.rb,
lib/puzzle_generator/chain.rb,
lib/puzzle_generator/puzzle.rb,
lib/puzzle_generator/chained_map.rb,
lib/puzzle_generator/colored_map.rb
Overview
Defined Under Namespace
Modules: DisplayMap, MapUtils Classes: Chain, ChainedMap, ColoredMap, GenerationFailed, Map, Puzzle
Constant Summary collapse
- LastTriedInfo =
:nodoc:
{}
- DefaultOption =
{:width => 6, :height => 10, :level => 4, :colors => 4, :invoke => 3, :invoke_max => 5, :timeout => 5}
Class Attribute Summary collapse
-
.debug ⇒ Object
specify whether to show the answer in the puzzle.
Class Method Summary collapse
-
.generate(timeout = 5, &generator) ⇒ Object
generate someing with generator with timeout, used in Puzzle#generate.
-
.generate_chained_map(option = {}) ⇒ Object
:nodoc:.
-
.generate_klass(klass, option = {}) ⇒ Object
:nodoc:.
Class Attribute Details
.debug ⇒ Object
specify whether to show the answer in the puzzle
15 |
# File 'lib/puzzle_generator/misc.rb', line 15 def debug; @debug || false; end |
Class Method Details
.generate(timeout = 5, &generator) ⇒ Object
generate someing with generator with timeout, used in Puzzle#generate
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/puzzle_generator.rb', line 37 def self.generate timeout = 5, &generator timer = Ludy::Timer.new(timeout).start tried_times = 1 begin result = generator.call until result.result_map.kind_of? Array tried_times += 1 result = generator.call end ensure # timer.stop LastTriedInfo.merge! :tried_times => tried_times, :tried_duration => timer.total_time end result end |
.generate_chained_map(option = {}) ⇒ Object
:nodoc:
27 28 29 |
# File 'lib/puzzle_generator.rb', line 27 def self.generate_chained_map option = {} #:nodoc: generate_klass ChainedMap, option end |
.generate_klass(klass, option = {}) ⇒ Object
:nodoc:
30 31 32 33 |
# File 'lib/puzzle_generator.rb', line 30 def self.generate_klass klass, option = {} #:nodoc: option.reverse_merge! :timeout => 5 generate(option[:timeout]){ klass.new option } end |