fun main(args: Array<String>) {
translate("BASIC")
translate("ELEET")
translate("WOW")
translate("MOM")
translate("3|337")
translate("storm")
translate("I am elite.")
translate("Da pain!")
translate("Eye need help!")
translate("3Y3 (\\)33d j00 t0 g37 d4 d0c70r.")
translate("1 n33d m4 p1llz!")
}
fun translate(str: String) {
val english: Array<String> = arrayOf("A", "B", "E", "I", "L", "M", "N", "O", "S", "T", "V", "W")
val leet: Array<String> = arrayOf("4", "6", "3", "1", "|", "(V)", "(\\)", "0", "5", "7", "\\/", "`//")
var translateLeet: Boolean = false
var newStr: String = str
var i: Int = -1
for (subStr in leet)
if (str.contains(subStr))
translateLeet = true
if (translateLeet)
while (i++ < english.size - 1)
newStr = newStr.replace(leet[i], english[i], true).toLowerCase()
else
while (i++ < leet.size - 1)
newStr = newStr.replace(english[i].toUpperCase(), leet[i], true)
println("$str -> $newStr")
}
ZnVuIG1haW4oYXJnczogQXJyYXk8U3RyaW5nPikgewogICAgdHJhbnNsYXRlKCJCQVNJQyIpCiAgICB0cmFuc2xhdGUoIkVMRUVUIikKICAgIHRyYW5zbGF0ZSgiV09XIikKICAgIHRyYW5zbGF0ZSgiTU9NIikKICAgIHRyYW5zbGF0ZSgiM3wzMzciKQogICAgdHJhbnNsYXRlKCJzdG9ybSIpCiAgICB0cmFuc2xhdGUoIkkgYW0gZWxpdGUuIikKICAgIHRyYW5zbGF0ZSgiRGEgcGFpbiEiKQogICAgdHJhbnNsYXRlKCJFeWUgbmVlZCBoZWxwISIpCiAgICB0cmFuc2xhdGUoIjNZMyAoXFwpMzNkIGowMCB0MCBnMzcgZDQgZDBjNzByLiIpCiAgICB0cmFuc2xhdGUoIjEgbjMzZCBtNCBwMWxseiEiKQp9CgpmdW4gdHJhbnNsYXRlKHN0cjogU3RyaW5nKSB7CiAgICB2YWwgZW5nbGlzaDogQXJyYXk8U3RyaW5nPiA9IGFycmF5T2YoIkEiLCAiQiIsICJFIiwgIkkiLCAiTCIsICJNIiwgIk4iLCAiTyIsICJTIiwgIlQiLCAiViIsICJXIikKICAgIHZhbCBsZWV0OiBBcnJheTxTdHJpbmc+ID0gYXJyYXlPZigiNCIsICI2IiwgIjMiLCAiMSIsICJ8IiwgIihWKSIsICIoXFwpIiwgIjAiLCAiNSIsICI3IiwgIlxcLyIsICJgLy8iKQoKICAgIHZhciB0cmFuc2xhdGVMZWV0OiBCb29sZWFuID0gZmFsc2UKICAgIHZhciBuZXdTdHI6IFN0cmluZyA9IHN0cgogICAgdmFyIGk6IEludCA9IC0xCgogICAgZm9yIChzdWJTdHIgaW4gbGVldCkKICAgICAgICBpZiAoc3RyLmNvbnRhaW5zKHN1YlN0cikpCiAgICAgICAgICAgIHRyYW5zbGF0ZUxlZXQgPSB0cnVlCgogICAgaWYgKHRyYW5zbGF0ZUxlZXQpCiAgICAgICAgd2hpbGUgKGkrKyA8IGVuZ2xpc2guc2l6ZSAtIDEpCiAgICAgICAgICAgIG5ld1N0ciA9IG5ld1N0ci5yZXBsYWNlKGxlZXRbaV0sIGVuZ2xpc2hbaV0sIHRydWUpLnRvTG93ZXJDYXNlKCkKICAgIGVsc2UKICAgICAgICB3aGlsZSAoaSsrIDwgbGVldC5zaXplIC0gMSkKICAgICAgICAgICAgbmV3U3RyID0gbmV3U3RyLnJlcGxhY2UoZW5nbGlzaFtpXS50b1VwcGVyQ2FzZSgpLCBsZWV0W2ldLCB0cnVlKQoKICAgIHByaW50bG4oIiRzdHIgLT4gJG5ld1N0ciIpCn0=