view bin/rot13 @ 12092:ceb43c4d37de draft

<fizzie> ` for w in benvenuto bienvenido bienvenue bonvenon tervetuloa v\xc3\xa4lkommen velkomin velkommen welcome welkom wercome willkommen \xd0\xb4\xd0\xbe\xd0\xb1\xd1\x80\xd0\xbe-\xd0\xbf\xd0\xbe\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd1\x8c; do sed -i -e \'2s|^|my $bin = $ENV{"HACKENV"}."/bin"; |;s|bin/[@?]|$&|g\' /hackenv/bin/$w; done
author HackEso <hackeso@esolangs.org>
date Sat, 16 Nov 2019 22:19:36 +0000
parents 6412d84cf279
children
line wrap: on
line source

#!/hackenv/bin/shebang_args_or_input python

import re, sys, unicodedata as U
def tr(c):
    m = re.match(r'(.*\bLATIN\b.*\bLETTER )([A-Z])\b(.*)', U.name(c, ''))
    if m:
        p, q, r = m.groups()
        n = ord(q) - ord('A')
        try:
            return U.lookup(p + chr(ord('A') + (n + 13) % 26) + r)
        except KeyError:
            return c
    return c

def tr2(c):
    d = tr(c)
    if d != c:
        return d
    else:
        cs = [unichr(int(x, 16)) for x in U.decomposition(c).split()]
        ds = [tr(x) for x in cs]
        if cs != ds:
            return u''.join(ds)
        else:
            return c

for c in unicode(sys.stdin.read(), 'utf8'):
    sys.stdout.write(tr2(c).encode('utf8'))