3141 - Atbash
Atbash
Cifrul atbash este un cifru de substituție care constă în inversarea alfabetului: prima literă din alfabet se interschimbă cu ultima, a doua cu penultima, etc.
Cerinţa
Se dă un șir s care conține doar litere mari. Să se aplice cifrul atbash pe el.
Date de intrare
Fișierul de intrare atbashin.txt conține pe prima linie șirul s.
Date de ieșire
Fișierul de ieșire atbashout.txt va conține pe prima linie șirul după aplicarea cifrului atbash.
Restricţii şi precizări
- 1 ⩽ lungimea șirului ⩽ 1.000.000
Exemplu 1
- atbashin.txt
ANAAREMERE
- atbashout.txt
Datele de intrare corespund restrictiilor impuse ZMZZIVNVIV
Exemplu 2
- atbashin.txt
anaaremere1
- atbashout.txt
Datele de intrare nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python" line> def atbash(s):
# Aplică cifrul Atbash pe șirul s return .join([chr(ord('Z') - (ord(c) - ord('A'))) for c in s])
def main():
with open('atbashin.txt', 'r') as fin, open('atbashout.txt', 'w') as fout: s = fin.readline().strip()
# Verifică dacă șirul respectă restricțiile if len(s) > 1000000 or not s.isupper(): fout.write("Datele de intrare nu corespund restrictiilor impuse\n") return
fout.write("Datele de intrare corespund restrictiilor impuse\n")
# Aplică cifrul Atbash pe șirul s și scrie rezultatul în fișierul de ieșire fout.write(atbash(s) + '\n')
if __name__ == "__main__":
main()
</syntaxhighlight>