Class: Guessword
- Inherits:
-
Object
- Object
- Guessword
- Defined in:
- lib/guessword.rb
Class Method Summary collapse
-
.guess(pattern_str, letters_str) ⇒ Object
Guess words by using patter and letters.
Class Method Details
.guess(pattern_str, letters_str) ⇒ Object
Guess words by using patter and letters.
Example:
>> Guessword.guess("****o","hell")
or
Using excute command
>> guessword ****o hell
output: hello
Arguments:
pattern_str: (String)
letters_str: (String)
Return:
words: (Array)
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/guessword.rb', line 20 def self.guess(pattern_str, letters_str) dict = Hash.new(false) File.open(File.join(File.dirname(__FILE__),'wordlist.txt'),'r').each_line do |word| dict[word.chop.upcase] = true end pattern = pattern_str.upcase.split('').to_a length = 0 pattern_flag = false pattern.each do |x| if x == '*' length = length + 1 else pattern_flag = true end end letters = letters_str.upcase.split('').to_a size = letters.length total = size.downto(size - length + 1).inject(1) { |r,e| r * e } puts "Input:" puts "Pattern = #{pattern}" puts "Length = #{length}" puts "Letters = #{letters.join}" puts "Size = #{size}" puts "Total = #{total}" puts puts "Output:" words = [] letters.permutation(length).entries.each do |y| if pattern_flag aword = [] pattern.each do |x| if x == '*' aword.push y.shift else aword.push x end end word = aword.join else word = y.join end if not words.include?(word) and dict[word.upcase] puts word words << word end end puts "Total: #{words.length}/#{total}" words end |