Sha256: 0e8b82383b9b3af663fd888c95194454437eb72853a831a5c1db2bb916c45f75

Contents?: true

Size: 813 Bytes

Versions: 9

Compression:

Stored size: 813 Bytes

Contents

# alpha at 2007.10.14

require 'puzzle_generator/puzzle'

require 'rubygems'
require 'facets/hash/reverse_merge'
require 'facets/timer'

module PuzzleGenerator

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

  LastTriedInfo = {}
  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

end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ludy-0.1.0 lib/puzzle_generator.rb
ludy-0.1.2 lib/puzzle_generator.rb
ludy-0.1.1 lib/puzzle_generator.rb
ludy-0.1.3 lib/puzzle_generator.rb
ludy-0.1.4 lib/puzzle_generator.rb
ludy-0.1.5 lib/puzzle_generator.rb
ludy-0.1.6 lib/puzzle_generator.rb
ludy-0.1.7 lib/puzzle_generator.rb
ludy-0.1.8 lib/puzzle_generator.rb