Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Rotated collections.deque with string.ascii_lowercase and re.sub solution in Clear category for Caesar Cipher (encryptor) by Splitter
from collections import deque
from string import ascii_lowercase
from re import sub
def to_encrypt(text, delta):
rotating_abc = deque(ascii_lowercase)
# Rotation is opposed to the delta.
rotating_abc.rotate(-delta)
# The lambda would called for each match.
replacer = lambda match: rotating_abc[ascii_lowercase.find(match.group())]
# Letters in 'text' are going to be replaced with their shifted versions.
return sub('[a-z]', replacer, text)
if __name__ == '__main__':
print("Example:")
print(to_encrypt('abc', 10))
#These "asserts" using only for self-checking and not necessary for auto-testing
assert to_encrypt("a b c", 3) == "d e f"
assert to_encrypt("a b c", -3) == "x y z"
assert to_encrypt("simple text", 16) == "iycfbu junj"
assert to_encrypt("important text", 10) == "swzybdkxd dohd"
assert to_encrypt("state secret", -13) == "fgngr frperg"
print("Coding complete? Click 'Check' to earn cool rewards!")
March 24, 2020