12 lines
445 B
Python
12 lines
445 B
Python
import string
|
|
def caesar(s, k = 13, decode = False, *, memo={}):
|
|
if decode: k = 26 - k
|
|
k = k % 26
|
|
table = memo.get(k)
|
|
if table is None:
|
|
table = memo[k] = str.maketrans(
|
|
string.ascii_uppercase + string.ascii_lowercase,
|
|
string.ascii_uppercase[k:] + string.ascii_uppercase[:k] +
|
|
string.ascii_lowercase[k:] + string.ascii_lowercase[:k])
|
|
return s.translate(table)
|