grimoire/ruby/words.rb

33 lines
580 B
Ruby

#!/usr/bin/env ruby
WORDS = File.open("/usr/share/dict/words", &:read).lines.map do |word|
word.strip.downcase
end.freeze
def word?(word)
WORDS.include? word.downcase
end
def permute(letters, prefix: "", &cb)
1.upto letters.size do
cur_prefix = prefix + letters.first
test_set = letters[1..]
if letters.size > 2
permute test_set, prefix: cur_prefix, &cb
else
word = cur_prefix + test_set.join
if word? word
yield word
end
end
letters = letters.rotate
end
end
permute %w[u h s e t l] do |word|
puts word
end