Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
require "jcode" class Array def shuffle sort_by { rand } end def shuffle! self.replace shuffle end end secret = "12t 10o 8e 7a 6l 6n 6u 5i 5s 5d 5h 5y 3I 3r 3f 2b 2w 1k 1c 1m 1v 1g" letter_queue = {} secret.split().each do |seq| number = seq.match(/[\d]+/) number ||= 1 letter = seq.match(/[\D]+/).to_s letter_queue[letter] = number.to_s.to_i end original = letter_queue.clone while true pool = "" letter_queue.sort.each { |e| pool += "#{e[0]}" * e[1] } puts pool.split('').shuffle.join() guess = gets.chomp guess.gsub(' ', '').each_char { |chr| if letter_queue[chr] letter_queue[chr] -= 1 if letter_queue[chr] < 0 raise "Used too many #{chr}'s. There were only #{original[chr]} to start with." end else raise "#{chr} not available" end } if guess.nil? break end end
This paste will be private.
From the Design Piracy series on my blog: