############################################################
#
# Name: den510
# Date: 04/25/17
# Challenge: #312 L33tspeak
# Description: Translate to and from 1337
#
############################################################
$leet_dictionary = {
'A' => '4',
'B' => '6',
'E' => '3',
'L' => '1',
'I' => '|',
'M' => '(V)',
'N' => '(\)',
'O' => '0',
'S' => '5',
'T' => '7',
'V' => '\/',
'W' => '`//'
}
def muggle_to_leet(word)
$leet_dictionary.keys.each { |key| word.gsub!(key, $leet_dictionary[key]) }
word
end
def leet_to_muggle(word)
$leet_dictionary.values.each { |value| word.gsub!(value, $leet_dictionary.key(value)) }
word
end
def ez_leet(word)
word.upcase!
$leet_dictionary.values.each { |value| return leet_to_muggle(word) if word.include?(value.to_s) }
muggle_to_leet(word)
end
puts ez_leet('31337')
puts ez_leet('storm')
puts ez_leet('I am elite.')
puts ez_leet('Da pain!')
puts ez_leet('Eye need help!')
puts ez_leet('3Y3 (\)33d j00 t0 g37 d4 d0c70r.')
puts ez_leet('| n33d m4 p|llz!')
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIyAgTmFtZTogICAgICAgICBkZW41MTAKIyAgRGF0ZTogICAgICAgICAwNC8yNS8xNwojICBDaGFsbGVuZ2U6ICAgICMzMTIgTDMzdHNwZWFrCiMgIERlc2NyaXB0aW9uOiAgVHJhbnNsYXRlIHRvIGFuZCBmcm9tIDEzMzcKIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRsZWV0X2RpY3Rpb25hcnkgPSB7CiAgICAnQScgPT4gJzQnLAogICAgJ0InID0+ICc2JywKICAgICdFJyA9PiAnMycsCiAgICAnTCcgPT4gJzEnLAogICAgJ0knID0+ICd8JywKICAgICdNJyA9PiAnKFYpJywKICAgICdOJyA9PiAnKFwpJywKICAgICdPJyA9PiAnMCcsCiAgICAnUycgPT4gJzUnLAogICAgJ1QnID0+ICc3JywKICAgICdWJyA9PiAnXC8nLAogICAgJ1cnID0+ICdgLy8nCn0KCmRlZiBtdWdnbGVfdG9fbGVldCh3b3JkKQogICRsZWV0X2RpY3Rpb25hcnkua2V5cy5lYWNoIHsgfGtleXwgd29yZC5nc3ViIShrZXksICRsZWV0X2RpY3Rpb25hcnlba2V5XSkgfQogIHdvcmQKZW5kCgpkZWYgbGVldF90b19tdWdnbGUod29yZCkKICAkbGVldF9kaWN0aW9uYXJ5LnZhbHVlcy5lYWNoIHsgfHZhbHVlfCB3b3JkLmdzdWIhKHZhbHVlLCAkbGVldF9kaWN0aW9uYXJ5LmtleSh2YWx1ZSkpIH0KICB3b3JkCmVuZAoKZGVmIGV6X2xlZXQod29yZCkKICB3b3JkLnVwY2FzZSEKICAkbGVldF9kaWN0aW9uYXJ5LnZhbHVlcy5lYWNoIHsgfHZhbHVlfCByZXR1cm4gbGVldF90b19tdWdnbGUod29yZCkgaWYgd29yZC5pbmNsdWRlPyh2YWx1ZS50b19zKSB9CiAgbXVnZ2xlX3RvX2xlZXQod29yZCkKZW5kCgpwdXRzIGV6X2xlZXQoJzMxMzM3JykKcHV0cyBlel9sZWV0KCdzdG9ybScpCgpwdXRzIGV6X2xlZXQoJ0kgYW0gZWxpdGUuJykKcHV0cyBlel9sZWV0KCdEYSBwYWluIScpCnB1dHMgZXpfbGVldCgnRXllIG5lZWQgaGVscCEnKQpwdXRzIGV6X2xlZXQoJzNZMyAoXCkzM2QgajAwIHQwIGczNyBkNCBkMGM3MHIuJykKcHV0cyBlel9sZWV0KCd8IG4zM2QgbTQgcHxsbHohJyk=