class Guessword
Public Class Methods
guess(pattern_str, letters_str)
click to toggle source
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)
# 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