In [13]:
inputs = ["""
SOYGTZYW WYWSWXGF CJ R FCYOGTCX PRX WQWXGORYYA VW WNGKRPGWL JKCS GEW ZOIIYW VWYCM TJ ACO BOFG UC YCCDTXU JCK GEWS (MCKL PCOXG: 20)
MULTIPLE ELEMENTS OF A SOLUTION CAN EVENTUALLY BE EXTRACTED FROM THE PUZZLE BELOW IF YOU JUST GO LOOKING FOR THEM (WORD COUNT: 20)
""",
"""
QGSN VPUN JR KRJ XRBY JWN TNOFYYFYO GYX NYX RZ NCNUM BRUX IRYONU JWGY ZRPU INJJNUV JWGJ MRP NEJUGHJ ZURQ JWFV LPDDIN (BRUX HRPYJ: 22)
MAKE SURE TO JOT DOWN THE BEGINNING AND END OF EVERY WORD LONGER THAN FOUR LETTERS THAT YOU EXTRACT FROM THIS PUZZLE (WORD COUNT: 22)
""",
"""
CSUS WL XI SXLWSU RQF WIENDAGSFS SBXDAGS (PNUO ENQIF: 7)
HERE IS AN EASIER BUT INCOMPLETE EXAMPLE (WORD COUNT: 7)
"""
]

MAPS = []
BASE = {i: ord(' ') for i in range(255) if chr(i).isalpha()}

for i, key in enumerate(inputs):
  before, after = key.strip().split('\n')
  trans = BASE.copy()
  trans.update(str.maketrans(before, after))
  MAPS.append(trans)

print(MAPS)


[{65: 89, 66: 74, 67: 79, 68: 75, 69: 72, 70: 83, 71: 84, 72: 32, 73: 90, 74: 70, 75: 82, 76: 68, 77: 87, 78: 88, 79: 85, 80: 67, 81: 86, 82: 65, 83: 77, 84: 73, 85: 71, 86: 66, 87: 69, 88: 78, 89: 76, 90: 80, 97: 32, 98: 32, 99: 32, 100: 32, 101: 32, 102: 32, 103: 32, 104: 32, 105: 32, 106: 32, 107: 32, 108: 32, 109: 32, 110: 32, 111: 32, 112: 32, 113: 32, 114: 32, 115: 32, 116: 32, 117: 32, 118: 32, 119: 32, 120: 32, 121: 32, 122: 32, 170: 32, 181: 32, 186: 32, 192: 32, 193: 32, 194: 32, 195: 32, 196: 32, 197: 32, 198: 32, 199: 32, 200: 32, 201: 32, 202: 32, 203: 32, 204: 32, 205: 32, 206: 32, 207: 32, 208: 32, 209: 32, 210: 32, 211: 32, 212: 32, 213: 32, 214: 32, 216: 32, 217: 32, 218: 32, 219: 32, 220: 32, 221: 32, 222: 32, 223: 32, 224: 32, 225: 32, 226: 32, 227: 32, 228: 32, 229: 32, 230: 32, 231: 32, 232: 32, 233: 32, 234: 32, 235: 32, 236: 32, 237: 32, 238: 32, 239: 32, 240: 32, 241: 32, 242: 32, 243: 32, 244: 32, 245: 32, 246: 32, 248: 32, 249: 32, 250: 32, 251: 32, 252: 32, 253: 32, 254: 32, 32: 32, 40: 40, 58: 58, 50: 50, 48: 48, 41: 41}, {65: 32, 66: 87, 67: 86, 68: 90, 69: 88, 70: 73, 71: 65, 72: 67, 73: 76, 74: 84, 75: 74, 76: 80, 77: 89, 78: 69, 79: 71, 80: 85, 81: 77, 82: 79, 83: 75, 84: 66, 85: 82, 86: 83, 87: 72, 88: 68, 89: 78, 90: 70, 97: 32, 98: 32, 99: 32, 100: 32, 101: 32, 102: 32, 103: 32, 104: 32, 105: 32, 106: 32, 107: 32, 108: 32, 109: 32, 110: 32, 111: 32, 112: 32, 113: 32, 114: 32, 115: 32, 116: 32, 117: 32, 118: 32, 119: 32, 120: 32, 121: 32, 122: 32, 170: 32, 181: 32, 186: 32, 192: 32, 193: 32, 194: 32, 195: 32, 196: 32, 197: 32, 198: 32, 199: 32, 200: 32, 201: 32, 202: 32, 203: 32, 204: 32, 205: 32, 206: 32, 207: 32, 208: 32, 209: 32, 210: 32, 211: 32, 212: 32, 213: 32, 214: 32, 216: 32, 217: 32, 218: 32, 219: 32, 220: 32, 221: 32, 222: 32, 223: 32, 224: 32, 225: 32, 226: 32, 227: 32, 228: 32, 229: 32, 230: 32, 231: 32, 232: 32, 233: 32, 234: 32, 235: 32, 236: 32, 237: 32, 238: 32, 239: 32, 240: 32, 241: 32, 242: 32, 243: 32, 244: 32, 245: 32, 246: 32, 248: 32, 249: 32, 250: 32, 251: 32, 252: 32, 253: 32, 254: 32, 32: 32, 40: 40, 58: 58, 50: 50, 41: 41}, {65: 80, 66: 88, 67: 72, 68: 77, 69: 67, 70: 84, 71: 76, 72: 32, 73: 78, 74: 32, 75: 32, 76: 83, 77: 32, 78: 79, 79: 68, 80: 87, 81: 85, 82: 66, 83: 69, 84: 32, 85: 82, 86: 32, 87: 73, 88: 65, 89: 32, 90: 32, 97: 32, 98: 32, 99: 32, 100: 32, 101: 32, 102: 32, 103: 32, 104: 32, 105: 32, 106: 32, 107: 32, 108: 32, 109: 32, 110: 32, 111: 32, 112: 32, 113: 32, 114: 32, 115: 32, 116: 32, 117: 32, 118: 32, 119: 32, 120: 32, 121: 32, 122: 32, 170: 32, 181: 32, 186: 32, 192: 32, 193: 32, 194: 32, 195: 32, 196: 32, 197: 32, 198: 32, 199: 32, 200: 32, 201: 32, 202: 32, 203: 32, 204: 32, 205: 32, 206: 32, 207: 32, 208: 32, 209: 32, 210: 32, 211: 32, 212: 32, 213: 32, 214: 32, 216: 32, 217: 32, 218: 32, 219: 32, 220: 32, 221: 32, 222: 32, 223: 32, 224: 32, 225: 32, 226: 32, 227: 32, 228: 32, 229: 32, 230: 32, 231: 32, 232: 32, 233: 32, 234: 32, 235: 32, 236: 32, 237: 32, 238: 32, 239: 32, 240: 32, 241: 32, 242: 32, 243: 32, 244: 32, 245: 32, 246: 32, 248: 32, 249: 32, 250: 32, 251: 32, 252: 32, 253: 32, 254: 32, 32: 32, 40: 40, 58: 58, 55: 55, 41: 41}]

In [15]:
GIVEN = """
QLSRUXWGGSFCSUSLFWLSDAFHWFIXTEYYCMVT
OLTGUGHVHMVIXOUBWEZFTHYPTXCGPWGIKOLW
BFIIRBYXTOGQYFPYOZZXGMQJNUUGHNWNWATH
MYZFRGMSYUUFVYEDPTPHLJOOQLFTXARTWKOG
YNJSTTHPXNCRHOSHLKJYWVBTDCYNRGLVKMWN
HIURUSGNCIFNJWXWCPCTROYRQGELVRFWEAGT
RHTFGEWNRJGYGYKFVYEYMSPQDWKFEXUDPJRZ
EMDDUGUCGTGRGMFGRPVYIMVQUWVBGOAPKRGN
GHJTUTNYGWYWWKVTKRTRUNULGYFUYEXQRUCF
CNXJKUFKHYJVCITWIBGMGIIFRIARRIXAWJKI
SUNERQRUTFGRGFDPMJUWNBWDJWKCZJJYFVKN
WJSHPGNPLPLTULJHRSMKMAXNVZYRMYGHWNDU
ENUIWQDDLSATXFJQSZSTNPZIVERLCTLXKGTD
WZIQXWCYTGERRLFWMQMJSXILJAVGSTCRVQHW
VFJPUQNUFHEYMHNYNNLRJGJRQKXGFPRENLWR
GHDDFLLNUZHTXQRFTCXQMAJNYGILDPIZXUGK
""".strip()

results = []
for i, m in enumerate(MAPS):
  print(i)
  result = GIVEN.translate(m)
  results.append(result)
  print(result)


0
VDMAGNETTMSOMGMDSEDMKYS ESZNIHLLOWBI
UDITGT B WBZNUGJEHPSI LCINOTCETZRUDE
JSZZAJLNIUTVLSCLUPPNTWVFXGGT XEXEYI 
WLPSATWMLGGSBLHKCIC DFUUVDSINYAIERUT
LXFMII CNXOA UM DRFLEBJIKOLXATDBRWEX
 ZGAGMTXOZSXFENEOCOIAULAVTHDBASEHYTI
A ISTHEXAFTLTLRSBLHLWMCVKERSHNGKCFAP
HWKKGTGOTITATWSTACBLZWBVGEBJTUYCRATX
T FIGIXLTELEERBIRAIAGXGDTLSGLHNVAGOS
OXNFRGSR LFBOZIEZJTWTZZSAZYAAZNYEFRZ
MGXHAVAGISTATSKCWFGEXJEKFEROPFFLSBRX
EFM CTXCDCDIGDF AMWRWYNXBPLAWLT EXKG
HXGZEVKKDMYINSFVMPMIXCPZBHADOIDNRTIK
EPZVNEOLITHAADSEWVWFMNZDFYBTMIOABV E
BSFCGVXGS HLW XLXXDAFTFAVRNTSCAHXDEA
T KKSDDXGP INVASIONVWYFXLTZDKCZPNGTR
1
MPKORDHAAKIVKRKPIHPKZ ICHILDBXNNVYSB
GPBARACSCYSLDGRWHXFIBCNUBDVAUHALJGPH
WILLOWNDBGAMNIUNGFFDAYMTERRACEHEH BC
YNFIOAYKNRRISNXZUBUCPTGGMPIBD OBHJGA
NETKBBCUDEVOCGKCPJTNHSWBZVNEOAPSJYHE
CLRORKAEVLIETHDHVUVBOGNOMAXPSOIHX AB
OCBIAXHEOTANANJISNXNYKUMZHJIXDRZUTOF
XYZZRARVABAOAYIAOUSNLYSMRHSWAG UJOAE
ACTBRBENAHNHHJSBJOBORERPANIRNXDMORVI
VEDTJRIJCNTSVLBHLWAYALLIOL OOLD HTJL
KREXOMORBIAOAIZUYTRHEWHZTHJVFTTNISJE
HTKCUAEUPUPBRPTCOKYJY DESFNOYNACHEZR
XERLHMZZPK BDITMKFKBEUFLSXOPVBPDJABZ
HFLMDHVNBAXOOPIHYMYTKDLPT SAKBVOSMCH
SITURMERICXNYCENEEPOTATOMJDAIUOXEPHO
ACZZIPPERFCBDMOIBVDMY TENALPZULFDRAJ
2
USEBRAILLETHERESTISEMPT ITNA C  H   
DS LRL     NADRXIC T   W AHLWILN DSI
XTNNBX A DLU TW D  AL U ORRL OIOIP  
   TBL E RRT  CMW W S DDUST APB I DL
 O E   WAOHB DE S   I X MH OBLS   IO
 NRBRELOHNTO IAIHWH BD BULCS BTICPL 
B  TLCIOB L L  T  C  EWUMI TCARMW B 
C MMRLRHL LBL TLBW  N  URI XLDPW BLO
L   R O LI II    B BRORSL TR CAUBRHT
HOA  RT     HN INXL LNNTBNPBBNAPI  N
EROCBUBR TLBLTMW  RIOXIM I H    T  O
I E WLOWSWS RS  BE   PAO   B  L IOMR
CORNIUMMSEP AT UE E OW N CBSH SA L M
I NUAIH  LCBBSTI U  EANS P LE HB U I
 T WRUORT C   O OOSB L BU ALTWBCOSIB
L MMTSSOR   AUBT HAU P O LNSMWN ARL 

In [21]:
for n, line in enumerate(results[2].replace(' ', '.').split('\n')):
  if n % 3 == 1:
    print()
  print(' '.join([line[i:i+2] for i in range(0, len(line), 2)]))


US EB RA IL LE TH ER ES TI SE MP T. IT NA .C .. H. ..

DS .L RL .. .. .N AD RX IC .T .. .W .A HL WI LN .D SI
XT NN BX .A .D LU .T W. D. .A L. U. OR RL .O IO IP ..
.. .T BL .E .R RT .. CM W. W. S. DD US T. AP B. I. DL

.O .E .. .W AO HB .D E. S. .. I. X. MH .O BL S. .. IO
.N RB RE LO HN TO .I AI HW H. BD .B UL CS .B TI CP L.
B. .T LC IO B. L. L. .T .. C. .E WU MI .T CA RM W. B.

C. MM RL RH L. LB L. TL BW .. N. .U RI .X LD PW .B LO
L. .. R. O. LI .I I. .. .B .B RO RS L. TR .C AU BR HT
HO A. .R T. .. .. HN .I NX L. LN NT BN PB BN AP I. .N

ER OC BU BR .T LB LT MW .. RI OX IM .I .H .. .. T. .O
I. E. WL OW SW S. RS .. BE .. .P AO .. .B .. L. IO MR
CO RN IU MM SE P. AT .U E. E. OW .N .C BS H. SA .L .M

I. NU AI H. .L CB BS TI .U .. EA NS .P .L E. HB .U .I
.T .W RU OR T. C. .. O. OO SB .L .B U. AL TW BC OS IB
L. MM TS SO R. .. AU BT .H AU .P .O .L NS MW N. AR L.

In [ ]: