43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
file = "./input.txt"
|
|
#file = "./ex.txt"
|
|
from time import time
|
|
import re
|
|
start_time = time()
|
|
|
|
def caesar_chiffre(text, verschiebung):
|
|
ergebnis = ""
|
|
for char in text:
|
|
if char.isalpha():
|
|
ascii_offset = 65 if char.isupper() else 97
|
|
verschobener_ascii = (ord(char) - ascii_offset + verschiebung) % 26 + ascii_offset
|
|
ergebnis += chr(verschobener_ascii)
|
|
else:
|
|
ergebnis += char
|
|
return ergebnis
|
|
|
|
def de_chiffre(txt:str, rot:int)-> str:
|
|
result = []
|
|
txt = txt.split("-")
|
|
for part in txt:
|
|
result.append(caesar_chiffre(part, rot))
|
|
return " ".join(result)
|
|
|
|
if __name__ == "__main__":
|
|
sol = 0
|
|
input_file = open(file, "r")
|
|
for line in input_file:
|
|
line = line.strip()
|
|
if line == "":
|
|
continue
|
|
else:
|
|
pat = r'^([a-z-]+)-(\d+)\[([a-z]+)\]$'
|
|
match = re.match(pat,line)
|
|
out_txt = de_chiffre(match.group(1), int(match.group(2)))
|
|
if "north" in out_txt:
|
|
print(f"{out_txt} - {match.group(2)}")
|
|
input_file.close()
|
|
|
|
print(f'Runtime: {time()-start_time:.4f} s') |