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