Skip to content

Instantly share code, notes, and snippets.

@qoh
Created March 6, 2015 19:40
Show Gist options
  • Save qoh/ade234bccf403723ca73 to your computer and use it in GitHub Desktop.
Save qoh/ade234bccf403723ca73 to your computer and use it in GitHub Desktop.
prefix_raw = "\
dozmarbinwansamlitsighidfidlissogdirwacsabwissib\
rigsoldopmodfoglidhopdardorlorhodfolrintogsilmir\
holpaslacrovlivdalsatlibtabhanticpidtorbolfosdot\
losdilforpilramtirwintadbicdifrocwidbisdasmidlop\
rilnardapmolsanlocnovsitnidtipsicropwitnatpanmin\
ritpodmottamtolsavposnapnopsomfinfonbanporworsip\
ronnorbotwicsocwatdolmagpicdavbidbaltimtasmallig\
sivtagpadsaldivdactansidfabtarmonranniswolmispal\
lasdismaprabtobrollatlonnodnavfignomnibpagsopral\
bilhaddocridmocpacravripfaltodtiltinhapmicfanpat\
taclabmogsimsonpinlomrictapfirhasbosbatpochactid\
havsaplindibhosdabbitbarracparloddosbortochilmac\
tomdigfilfasmithobharmighinradmashalraglagfadtop\
mophabnilnosmilfopfamdatnoldinhatnacrisfotribhoc\
nimlarfitwalrapsarnalmoslandondanladdovrivbacpol\
laptalpitnambonrostonfodponsovnocsorlavmatmipfap\
"
suffix_raw = "\
zodnecbudwessevpersutletfulpensytdurwepserwylsun\
rypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnex\
lunmeplutseppesdelsulpedtemledtulmetwenbynhexfeb\
pyldulhetmevruttylwydtepbesdexsefwycburderneppur\
rysrebdennutsubpetrulsynregtydsupsemwynrecmegnet\
secmulnymtevwebsummutnyxrextebfushepbenmuswyxsym\
selrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpel\
syptermebsetdutdegtexsurfeltudnuxruxrenwytnubmed\
lytdusnebrumtynseglyxpunresredfunrevrefmectedrus\
bexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermer\
tenlusnussyltecmexpubrymtucfyllepdebbermughuttun\
bylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmyl\
wedducfurfexnulluclennerlexrupnedlecrydlydfenwel\
nydhusrelrudneshesfetdesretdunlernyrsebhulryllud\
remlysfynwerrycsugnysnyllyndyndemluxfedsedbecmun\
lyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes\
"
prefix_rune = [prefix_raw[i:i+3] for i in range(0, 768, 3)]
suffix_rune = [suffix_raw[i:i+3] for i in range(0, 768, 3)]
prefix_byte = {r: i for i, r in enumerate(prefix_rune)}
suffix_byte = {r: i for i, r in enumerate(suffix_rune)}
def encode(data):
if len(data) == 1:
return suffix_rune[data[0]]
if len(data) % 2 == 1:
return encode(data[:1]) + "-" + encode(data[1:])
parts = []
for i in range(0, len(data), 2):
parts.append(prefix_rune[data[i]] + suffix_rune[data[i+1]])
return "-".join(parts)
def decode(data):
out = bytearray()
for part in data.split("-"):
if len(part) == 3:
out.append(suffix_byte[part])
if len(part) == 6:
out.append(prefix_byte[part[:3]])
out.append(suffix_byte[part[3:]])
return out
def encode_str(data):
return encode([ord(c) for c in data])
def decode_str(data):
return "".join(chr(i) for i in decode(data))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment