1
0
Fork 0
wordle-solver/lib/strategy/template.rb

25 lines
733 B
Ruby
Raw Normal View History

2022-01-27 20:52:13 -05:00
module Strategy
class Template
attr :dictionary, :word_size
def initialize(dictionary:, word_size: 5)
@dictionary = dictionary
@word_size = word_size
end
def guess(good_letters:, bad_letters:, guesses:, template:, **args)
dictionary.words
.select { |word| word.length == word_size }
.reject { |word| bad_letters.any? { |letter| word.chars.include?(letter) } }
.select { |word| (good_letters - word.chars).length == 0 }
.reject { |word| guesses.include?(word) }
.select do |word|
template.each_with_index.all? do |letter, index|
letter == "*" || letter == word.chars[index]
end
end
.sample
end
end
end