Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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