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
#!/usr/bin/env ruby
require 'set'
require 'pry'
DICT = Set.new(File.read('/usr/share/dict/words').split("\n").map(&:downcase))
DICT.select! {|word| word.size == 4 }
trans = Hash[((?a..?z).to_a - [?q]).zip('nxizwrejlgtubpvyacsodfmkh'.split(//))]
inv = trans.invert
DICT.each do |word|
b = word.split(//).map {|letter| trans[letter] }.join
next unless DICT.include?(b)
puts "#{word}, #{b}"
# puts "#{word} => #{b}"
end
DICT.each do |word|
b = word.split(//).map {|letter| inv[letter] }.join
next unless DICT.include?(b)
puts "#{word}, #{b}"
# puts "#{word} => #{b}"
end