Module: PuzzleGenerator

Defined in:
lib/puzzle_generator/map.rb,
lib/puzzle_generator.rb,
lib/puzzle_generator/misc.rb,
lib/puzzle_generator/puzzle.rb,
lib/puzzle_generator/chained_map.rb,
lib/puzzle_generator/colored_map.rb

Overview

a = [[1,2],,[5,6]] [a, [1,2,3]].combos

> [[[1, 2], 1], [[1, 2], 2], [[1, 2], 3], [[3, 4], 1], [[3, 4], 2], [[3, 4], 3], [[5, 6], 1], [[5, 6], 2], [[5, 6], 3]]

Defined Under Namespace

Modules: DisplayMap, MapUtils Classes: ChainedMap, ColoredMap, GenerationFailed, Map, Puzzle

Constant Summary collapse

LastTriedInfo =
{}
DefaultOption =
{:width => 6, :height => 10, :level => 4, :colors => 4,
:invoke => 3, :invoke_max => 5, :timeout => 5}

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.debugObject



15
# File 'lib/puzzle_generator/misc.rb', line 15

def debug; @debug || false; end

Class Method Details

.generate(timeout = 5, &generator) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/puzzle_generator.rb', line 19

def self.generate timeout = 5, &generator
  timer = 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



12
# File 'lib/puzzle_generator.rb', line 12

def self.generate_chained_map option = {}; generate_klass ChainedMap, option; end

.generate_klass(klass, option = {}) ⇒ Object



13
14
15
16
# File 'lib/puzzle_generator.rb', line 13

def self.generate_klass klass, option = {}
  option.reverse_merge! :timeout => 5
  generate(option[:timeout]){ klass.new option }
end