#include <stdio.h>
def translate(x): #helper function used to translate a letter into a number
if x == 'A':
return 0
elif x == 'B':
return 1
elif x == 'C':
return 2
elif x == 'D':
return 3
elif x == 'E':
return 4
elif x == 'F':
return 5
elif x == 'G':
return 6
elif x == 'H':
return 7
elif x == 'I':
return 8
elif x == 'J':
return 9
elif x == 'K':
return 10
elif x == 'L':
return 11
elif x == 'M':
return 12
elif x == 'N':
return 13
elif x == 'O':
return 14
elif x == 'P':
return 15
elif x == 'Q':
return 16
elif x == 'R':
return 17
elif x == 'S':
return 18
elif x == 'T':
return 19
elif x == 'U':
return 20
elif x == 'V':
return 21
elif x == 'W':
return 22
elif x == 'X':
return 23
elif x == 'Y':
return 24
elif x == 'Z':
return 25
def backToLetter(x): #a helper function used to turn a number back into a letter
if x == 0:
return 'A'
elif x == 1:
return 'B'
elif x == 2:
return 'C'
elif x == 3:
return 'D'
elif x == 4:
return 'E'
elif x == 5:
return 'F'
elif x == 6:
return 'G'
elif x == 7:
return 'H'
elif x == 8:
return 'I'
elif x == 9:
return 'J'
elif x == 10:
return 'K'
elif x == 11:
return 'L'
elif x == 12:
return 'M'
elif x == 13:
return 'N'
elif x == 14:
return 'O'
elif x == 15:
return 'P'
elif x == 16:
return 'Q'
elif x == 17:
return 'R'
elif x == 18:
return 'S'
elif x == 19:
return 'T'
elif x == 20:
return 'U'
elif x == 21:
return 'V'
elif x == 22:
return 'W'
elif x == 23:
return 'X'
elif x == 24:
return 'Y'
elif x == 25:
return 'Z'
def affineCrypt(plaintext): #a function representing the Affine Cipher. Takes a string input
newtext = plaintext.replace(" ", '') #replacing all spaces
p = 0
i = ""
c = ""
for x in newtext: #going through each letter of the plaintext
p = translate(x) #translating each letter into a number
c += backToLetter(((5*p)+9) % 26) #employ the formula and turn the result back into a letter and place it into the ciphertext string
return c
if __name__ == "__main__":
plaintext = "CRYPTOISFUN"
print(affineCrypt(plaintext))
I2luY2x1ZGUgPHN0ZGlvLmg+CgpkZWYgdHJhbnNsYXRlKHgpOiAjaGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gdHJhbnNsYXRlIGEgbGV0dGVyIGludG8gYSBudW1iZXIKICAgIGlmIHggPT0gJ0EnOgogICAgICAgIHJldHVybiAwCiAgICBlbGlmIHggPT0gJ0InOgogICAgICAgIHJldHVybiAxCiAgICBlbGlmIHggPT0gJ0MnOgogICAgICAgIHJldHVybiAyCiAgICBlbGlmIHggPT0gJ0QnOgogICAgICAgIHJldHVybiAzCiAgICBlbGlmIHggPT0gJ0UnOgogICAgICAgIHJldHVybiA0CiAgICBlbGlmIHggPT0gJ0YnOgogICAgICAgIHJldHVybiA1CiAgICBlbGlmIHggPT0gJ0cnOgogICAgICAgIHJldHVybiA2CiAgICBlbGlmIHggPT0gJ0gnOgogICAgICAgIHJldHVybiA3CiAgICBlbGlmIHggPT0gJ0knOgogICAgICAgIHJldHVybiA4CiAgICBlbGlmIHggPT0gJ0onOgogICAgICAgIHJldHVybiA5CiAgICBlbGlmIHggPT0gJ0snOgogICAgICAgIHJldHVybiAxMAogICAgZWxpZiB4ID09ICdMJzoKICAgICAgICByZXR1cm4gMTEKICAgIGVsaWYgeCA9PSAnTSc6CiAgICAgICAgcmV0dXJuIDEyCiAgICBlbGlmIHggPT0gJ04nOgogICAgICAgIHJldHVybiAxMwogICAgZWxpZiB4ID09ICdPJzoKICAgICAgICByZXR1cm4gMTQKICAgIGVsaWYgeCA9PSAnUCc6CiAgICAgICAgcmV0dXJuIDE1CiAgICBlbGlmIHggPT0gJ1EnOgogICAgICAgIHJldHVybiAxNgogICAgZWxpZiB4ID09ICdSJzoKICAgICAgICByZXR1cm4gMTcKICAgIGVsaWYgeCA9PSAnUyc6CiAgICAgICAgcmV0dXJuIDE4CiAgICBlbGlmIHggPT0gJ1QnOgogICAgICAgIHJldHVybiAxOQogICAgZWxpZiB4ID09ICdVJzoKICAgICAgICByZXR1cm4gMjAKICAgIGVsaWYgeCA9PSAnVic6CiAgICAgICAgcmV0dXJuIDIxCiAgICBlbGlmIHggPT0gJ1cnOgogICAgICAgIHJldHVybiAyMgogICAgZWxpZiB4ID09ICdYJzoKICAgICAgICByZXR1cm4gMjMKICAgIGVsaWYgeCA9PSAnWSc6CiAgICAgICAgcmV0dXJuIDI0CiAgICBlbGlmIHggPT0gJ1onOgogICAgICAgIHJldHVybiAyNQogICAgICAgIApkZWYgYmFja1RvTGV0dGVyKHgpOiAgI2EgaGVscGVyIGZ1bmN0aW9uIHVzZWQgdG8gdHVybiBhIG51bWJlciBiYWNrIGludG8gYSBsZXR0ZXIKICAgIGlmIHggPT0gMDoKICAgICAgICByZXR1cm4gJ0EnCiAgICBlbGlmIHggPT0gMToKICAgICAgICByZXR1cm4gJ0InCiAgICBlbGlmIHggPT0gMjoKICAgICAgICByZXR1cm4gJ0MnCiAgICBlbGlmIHggPT0gMzoKICAgICAgICByZXR1cm4gJ0QnCiAgICBlbGlmIHggPT0gNDoKICAgICAgICByZXR1cm4gJ0UnCiAgICBlbGlmIHggPT0gNToKICAgICAgICByZXR1cm4gJ0YnCiAgICBlbGlmIHggPT0gNjoKICAgICAgICByZXR1cm4gJ0cnCiAgICBlbGlmIHggPT0gNzoKICAgICAgICByZXR1cm4gJ0gnCiAgICBlbGlmIHggPT0gODoKICAgICAgICByZXR1cm4gJ0knCiAgICBlbGlmIHggPT0gOToKICAgICAgICByZXR1cm4gJ0onCiAgICBlbGlmIHggPT0gMTA6CiAgICAgICAgcmV0dXJuICdLJwogICAgZWxpZiB4ID09IDExOgogICAgICAgIHJldHVybiAnTCcKICAgIGVsaWYgeCA9PSAxMjoKICAgICAgICByZXR1cm4gJ00nCiAgICBlbGlmIHggPT0gMTM6CiAgICAgICAgcmV0dXJuICdOJwogICAgZWxpZiB4ID09IDE0OgogICAgICAgIHJldHVybiAnTycKICAgIGVsaWYgeCA9PSAxNToKICAgICAgICByZXR1cm4gJ1AnCiAgICBlbGlmIHggPT0gMTY6CiAgICAgICAgcmV0dXJuICdRJwogICAgZWxpZiB4ID09IDE3OgogICAgICAgIHJldHVybiAnUicKICAgIGVsaWYgeCA9PSAxODoKICAgICAgICByZXR1cm4gJ1MnCiAgICBlbGlmIHggPT0gMTk6CiAgICAgICAgcmV0dXJuICdUJwogICAgZWxpZiB4ID09IDIwOgogICAgICAgIHJldHVybiAnVScKICAgIGVsaWYgeCA9PSAyMToKICAgICAgICByZXR1cm4gJ1YnCiAgICBlbGlmIHggPT0gMjI6CiAgICAgICAgcmV0dXJuICdXJwogICAgZWxpZiB4ID09IDIzOgogICAgICAgIHJldHVybiAnWCcKICAgIGVsaWYgeCA9PSAyNDoKICAgICAgICByZXR1cm4gJ1knCiAgICBlbGlmIHggPT0gMjU6CiAgICAgICAgcmV0dXJuICdaJwoKZGVmIGFmZmluZUNyeXB0KHBsYWludGV4dCk6ICAgICAgICAgICAgICAgI2EgZnVuY3Rpb24gcmVwcmVzZW50aW5nIHRoZSBBZmZpbmUgQ2lwaGVyLiBUYWtlcyBhIHN0cmluZyBpbnB1dAogICAgbmV3dGV4dCA9IHBsYWludGV4dC5yZXBsYWNlKCIgIiwgJycpICAjcmVwbGFjaW5nIGFsbCBzcGFjZXMKICAgIHAgPSAwCiAgICBpID0gIiIKICAgIGMgPSAiIgogICAgZm9yIHggaW4gbmV3dGV4dDogICAgICAgICAgICAgICAgICAgICAjZ29pbmcgdGhyb3VnaCBlYWNoIGxldHRlciBvZiB0aGUgcGxhaW50ZXh0CiAgICAgICAgcCA9IHRyYW5zbGF0ZSh4KSAgICAgICAgICAgICAgICAgICN0cmFuc2xhdGluZyBlYWNoIGxldHRlciBpbnRvIGEgbnVtYmVyCiAgICAgICAgYyArPSBiYWNrVG9MZXR0ZXIoKCg1KnApKzkpICUgMjYpICNlbXBsb3kgdGhlIGZvcm11bGEgYW5kIHR1cm4gdGhlIHJlc3VsdCBiYWNrIGludG8gYSBsZXR0ZXIgYW5kIHBsYWNlIGl0IGludG8gdGhlIGNpcGhlcnRleHQgc3RyaW5nCiAgICByZXR1cm4gYwoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKCXBsYWludGV4dCA9ICJDUllQVE9JU0ZVTiIKCXByaW50KGFmZmluZUNyeXB0KHBsYWludGV4dCkp