Skip to content

Instantly share code, notes, and snippets.

@splattael
Created January 28, 2009 18:21
Show Gist options
  • Select an option

  • Save splattael/54111 to your computer and use it in GitHub Desktop.

Select an option

Save splattael/54111 to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
DICT = %w(/usr/share/dict/ogerman /usr/share/dict/american-english)
ARGV.size != 1 and raise "usage: #{$0} prefix"
prefix = ARGV[0]
LEET2NUM = {
"o" => 0,
"i" => 1,
"z" => 2,
"e" => 3,
"a" => 4,
"s" => 5,
"g" => 6,
#"l" => 7,
"t" => 7,
"b" => 8,
"p" => 9,
}
class String
def unleet
split(//).map do |char|
LEET2NUM[char] || char
end.join
end
end
REGEX = /^(#{prefix})([a-z0-9-]{1,2})([#{LEET2NUM.keys.join}]{1,4})$/i
def find(dict)
puts "# #{dict}"
File.read(dict).each do |line|
line.chomp!
if m = REGEX.match(line)
prefix, mid, leet = m.captures
printf "%2s - %-2s %-4s # %s\n" % [ prefix.upcase, mid.upcase, leet.unleet, line.downcase ]
end
end
end
DICT.each do |dict|
find(dict)
end
# /usr/share/dict/ogerman
PI - AN 157 # pianist
PI - AN 0 # piano
PI - AN 0 # piano
PI - CA 550 # picasso
PI - CK 7 # pickt
PI - LL 3 # pille
PI - LO 7 # pilot
PI - L 5 # pils
PI - L 2 # pilz
PI - NI 3 # pinie
PI - NZ 3773 # pinzette
PI - PE 773 # pipette
PI - PP 1 # pippi
PI - QU 37 # piquet
PI - RA 7 # pirat
PI - ST 4213 # pistazie
PI - ST 3 # piste
PI - U 5 # pius
PI - ZZ 4 # pizza
# /usr/share/dict/american-english
PI - AG 37 # piaget
PI - CA 550 # picasso
PI - CK 377 # pickett
PI - C 7 # pict
PI - GM 135 # pigmies
PI - K 3 # pike
PI - LA 73 # pilate
PI - S 4 # pisa
PI - SC 35 # pisces
PI - T 7 # pitt
PI - TT 5 # pitts
PI - U 5 # pius
PI - AN 157 # pianist
PI - AN 1575 # pianists
PI - AN 0 # piano
PI - AN 05 # pianos
PI - AZ 24 # piazza
PI - AZ 245 # piazzas
PI - AZ 23 # piazze
PI - C 4 # pica
PI - CK 37 # picket
PI - CK 375 # pickets
PI - CK 1357 # pickiest
PI - CK 5 # picks
PI - EC 3 # piece
PI - EC 35 # pieces
PI - ER 5 # piers
PI - E 5 # pies
PI - GG 135 # piggies
PI - GG 1357 # piggiest
PI - GL 37 # piglet
PI - GL 375 # piglets
PI - GM 135 # pigmies
PI - G 5 # pigs
PI - GS 7135 # pigsties
PI - IN 6 # piing
PI - K 3 # pike
PI - KE 5 # pikes
PI - L 3 # pile
PI - LE 5 # piles
PI - LL 463 # pillage
PI - LL 4635 # pillages
PI - LL 5 # pills
PI - LO 7 # pilot
PI - LO 75 # pilots
PI - M 9 # pimp
PI - MP 5 # pimps
PI - N 3 # pine
PI - NE 5 # pines
PI - N 6 # ping
PI - NG 5 # pings
PI - NK 357 # pinkest
PI - NK 13 # pinkie
PI - NK 135 # pinkies
PI - NK 5 # pinks
PI - NN 473 # pinnate
PI - N 5 # pins
PI - N 7 # pint
PI - NT 0 # pinto
PI - NT 035 # pintoes
PI - NT 05 # pintos
PI - NT 5 # pints
PI - NU 9 # pinup
PI - NU 95 # pinups
PI - OU 5 # pious
PI - P 3 # pipe
PI - PE 5 # pipes
PI - PI 7 # pipit
PI - PI 75 # pipits
PI - P 5 # pips
PI - QU 3 # pique
PI - QU 35 # piques
PI - RA 73 # pirate
PI - RA 735 # pirates
PI - S 5 # piss
PI - SS 35 # pisses
PI - T 4 # pita
PI - TH 1357 # pithiest
PI - TI 35 # pities
PI - T 5 # pits
PI - VO 7 # pivot
PI - VO 75 # pivots
PI - XI 3 # pixie
PI - XI 35 # pixies
PI - ZA 22 # pizazz
PI - ZZ 4 # pizza
PI - ZZ 45 # pizzas
PI - ZZ 422 # pizzazz
# /usr/share/dict/ogerman
TR - A 8 # trab
TR - AF 0 # trafo
TR - AK 7 # trakt
TR - AK 747 # traktat
TR - AP 32 # trapez
TR - AS 547 # trassat
TR - A 7 # trat
TR - AT 73 # tratte
TR - AU 83 # traube
TR - EI 8315 # treibeis
TR - EI 8645 # treibgas
TR - EN 53 # trense
TR - EP 93 # treppe
TR - EU 3573 # treueste
TR - IA 5 # trias
TR - IE 8 # trieb
TR - IE 8 # trieb
TR - IE 57 # triest
TR - IF 716 # triftig
TR - IK 07 # trikot
TR - IL 0613 # trilogie
TR - I 0 # trio
TR - I 9 # trip
TR - IS 7 # trist
TR - IT 7 # tritt
TR - IT 757 # trittst
TR - O 6 # trog
TR - OJ 4 # troja
TR - OS 7 # trost
TR - OT 7 # trott
TR - OT 2 # trotz
TR - OT 2 # trotz
TR - OT 216 # trotzig
TR - U 6 # trug
TR - UH 3 # truhe
TR - UP 93 # truppe
# /usr/share/dict/american-english
TR - AC 1 # traci
TR - AC 13 # tracie
TR - AP 9157 # trappist
TR - AV 15 # travis
TR - EN 7 # trent
TR - IC 14 # tricia
TR - IE 573 # trieste
TR - IN 4 # trina
TR - IP 93 # trippe
TR - OY 35 # troyes
TR - UM 9 # trump
TR - AC 3 # trace
TR - AC 35 # traces
TR - AC 7 # tract
TR - AC 75 # tracts
TR - AD 3 # trade
TR - AD 35 # trades
TR - AI 953 # traipse
TR - AI 9535 # traipses
TR - AI 7 # trait
TR - AI 75 # traits
TR - AM 9 # tramp
TR - AM 95 # tramps
TR - AM 5 # trams
TR - AN 5397 # transept
TR - AN 517 # transit
TR - AN 5175 # transits
TR - A 9 # trap
TR - AP 323 # trapeze
TR - AP 3235 # trapezes
TR - AP 5 # traps
TR - AY 5 # trays
TR - EA 7 # treat
TR - EA 7135 # treaties
TR - EA 7153 # treatise
TR - EA 75 # treats
TR - E 3 # tree
TR - EE 5 # trees
TR - EE 709 # treetop
TR - EE 7095 # treetops
TR - EK 5 # treks
TR - ES 9455 # trespass
TR - ES 5 # tress
TR - ES 535 # tresses
TR - IA 63 # triage
TR - IB 3 # tribe
TR - IB 35 # tribes
TR - IC 3 # trice
TR - IC 395 # triceps
TR - IE 5 # tries
TR - I 6 # trig
TR - IG 6357 # triggest
TR - IK 3 # trike
TR - IK 35 # trikes
TR - IM 5 # trims
TR - I 0 # trio
TR - IO 5 # trios
TR - I 9 # trip
TR - IP 3 # tripe
TR - IP 05 # tripos
TR - IP 5 # trips
TR - IT 3 # trite
TR - IT 35 # trites
TR - IT 357 # tritest
TR - IV 37 # trivet
TR - IV 375 # trivets
TR - IV 14 # trivia
TR - OD 35 # trodes
TR - OM 9 # tromp
TR - OM 95 # tromps
TR - OO 9 # troop
TR - OO 95 # troops
TR - OP 3 # trope
TR - OP 35 # tropes
TR - O 7 # trot
TR - OT 5 # trots
TR - OU 93 # troupe
TR - OU 935 # troupes
TR - OU 7 # trout
TR - OU 75 # trouts
TR - OY 5 # troys
TR - UC 3 # truce
TR - UC 35 # truces
TR - UD 63 # trudge
TR - UD 635 # trudges
TR - U 3 # true
TR - UE 5 # trues
TR - UE 57 # truest
TR - UM 9 # trump
TR - UM 937 # trumpet
TR - UM 9375 # trumpets
TR - UM 95 # trumps
TR - US 5 # truss
TR - US 535 # trusses
TR - US 7 # trust
TR - US 733 # trustee
TR - US 7335 # trustees
TR - US 7135 # trusties
TR - US 75 # trusts
TR - YS 7 # tryst
TR - YS 75 # trysts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment