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