a = lambda n:((n+1)&0b11111111)
e = lambda n:((n&0b00010101)<<2)|((n&0b10101000)>>2)|((n&0b01000000)<<1)|((n&0b00000010)>>1)
u = lambda n:((n+0b11111111)&0b11111111)
metaexprs = [[]]*256
for metaindex,exprs in enumerate(metaexprs):
exprs = [""]*256
exprs[metaindex] = "w" if metaindex else "z"
length = 1
while not all(exprs):
for index,expr in enumerate(exprs):
if len(expr) == length:
candidate_a = a(index)
candidate_e = e(index)
candidate_u = u(index)
if (not exprs[candidate_a]) or (length+1 < len(exprs[candidate_a])):
exprs[candidate_a] = expr+"a"
if (not exprs[candidate_e]) or (length+1 < len(exprs[candidate_e])):
exprs[candidate_e] = expr+"e"
if (not exprs[candidate_u]) or (length+1 < len(exprs[candidate_u])):
exprs[candidate_u] = expr+"u"
length += 1
metaexprs[metaindex] = exprs
print("Method 1:")
for char in "Hello, world!\r\n":
print(metaexprs[0][ord(char)]+"w")
print("")
print("Method 2:")
for prev,curr in zip("\x00Hello, world!\r", "Hello, world!\r\n"):
candidate1 = metaexprs[ord(prev)][ord(curr)]+"w"
candidate1 = candidate1[1:] if candidate1[0]=="w" else candidate1
candidate2 = metaexprs[0][ord(curr)]+"w"
print(sorted([candidate1,candidate2],key=len)[0])
YSA9IGxhbWJkYSBuOigobisxKSYwYjExMTExMTExKQplID0gbGFtYmRhIG46KChuJjBiMDAwMTAxMDEpPDwyKXwoKG4mMGIxMDEwMTAwMCk+PjIpfCgobiYwYjAxMDAwMDAwKTw8MSl8KChuJjBiMDAwMDAwMTApPj4xKQp1ID0gbGFtYmRhIG46KChuKzBiMTExMTExMTEpJjBiMTExMTExMTEpCgptZXRhZXhwcnMgPSBbW11dKjI1NgoKZm9yIG1ldGFpbmRleCxleHBycyBpbiBlbnVtZXJhdGUobWV0YWV4cHJzKToKCWV4cHJzID0gWyIiXSoyNTYKCWV4cHJzW21ldGFpbmRleF0gPSAidyIgaWYgbWV0YWluZGV4IGVsc2UgInoiCgkKCWxlbmd0aCA9IDEKCQoJd2hpbGUgbm90IGFsbChleHBycyk6CgkJZm9yIGluZGV4LGV4cHIgaW4gZW51bWVyYXRlKGV4cHJzKToKCQkJaWYgbGVuKGV4cHIpID09IGxlbmd0aDoKCQkJCWNhbmRpZGF0ZV9hID0gYShpbmRleCkKCQkJCWNhbmRpZGF0ZV9lID0gZShpbmRleCkKCQkJCWNhbmRpZGF0ZV91ID0gdShpbmRleCkKCQkJCWlmIChub3QgZXhwcnNbY2FuZGlkYXRlX2FdKSBvciAobGVuZ3RoKzEgPCBsZW4oZXhwcnNbY2FuZGlkYXRlX2FdKSk6CgkJCQkJZXhwcnNbY2FuZGlkYXRlX2FdID0gZXhwcisiYSIKCQkJCWlmIChub3QgZXhwcnNbY2FuZGlkYXRlX2VdKSBvciAobGVuZ3RoKzEgPCBsZW4oZXhwcnNbY2FuZGlkYXRlX2VdKSk6CgkJCQkJZXhwcnNbY2FuZGlkYXRlX2VdID0gZXhwcisiZSIKCQkJCWlmIChub3QgZXhwcnNbY2FuZGlkYXRlX3VdKSBvciAobGVuZ3RoKzEgPCBsZW4oZXhwcnNbY2FuZGlkYXRlX3VdKSk6CgkJCQkJZXhwcnNbY2FuZGlkYXRlX3VdID0gZXhwcisidSIKCQlsZW5ndGggKz0gMQoJCgltZXRhZXhwcnNbbWV0YWluZGV4XSA9IGV4cHJzCgpwcmludCgiTWV0aG9kIDE6IikKZm9yIGNoYXIgaW4gIkhlbGxvLCB3b3JsZCFcclxuIjoKCXByaW50KG1ldGFleHByc1swXVtvcmQoY2hhcildKyJ3IikKCnByaW50KCIiKQoKcHJpbnQoIk1ldGhvZCAyOiIpCmZvciBwcmV2LGN1cnIgaW4gemlwKCJceDAwSGVsbG8sIHdvcmxkIVxyIiwgIkhlbGxvLCB3b3JsZCFcclxuIik6CgljYW5kaWRhdGUxID0gbWV0YWV4cHJzW29yZChwcmV2KV1bb3JkKGN1cnIpXSsidyIKCWNhbmRpZGF0ZTEgPSBjYW5kaWRhdGUxWzE6XSBpZiBjYW5kaWRhdGUxWzBdPT0idyIgZWxzZSBjYW5kaWRhdGUxCgljYW5kaWRhdGUyID0gbWV0YWV4cHJzWzBdW29yZChjdXJyKV0rInciCglwcmludChzb3J0ZWQoW2NhbmRpZGF0ZTEsY2FuZGlkYXRlMl0sa2V5PWxlbilbMF0p