Déchiffrement de la première page

Sujet

Vous avez enfin trouvé le livre que vous cherchiez depuis des jours, mais il vous est impossible de lire : toutes les pages semblent cryptées ! Une analyse plus poussée vous révèle que la première page est encodée avec un système de cryptage très classique, et toujours utilisé actuellement.

Dans ce système de cryptage, on remplace chaque lettre du message par une autre, à l'aide d'une grille de cryptage. Pour décrypter le message, il suffit de faire pareil mais avec la grille inverse (la grille de décryptage) et on retrouvera le texte original.

Vous avez plusieurs idées pour cette fameuse clé de décryptage mais comme il serait trop long de tester à la main, vous décidez d’écrire un programme pour décoder automatiquement un texte, étant donnée la clé.

Contraintes

Le texte crypté contient au plus 1000 caractères.

Entrée

Sortie

Exemple


entrée :

qwertyuiopasdfghjklzxcvbnm
Xiyqigd !

sortie :

Bonjour !

Solution

def déchiffre(lettre: str) -> str:
    """
    Déchiffre en fonction de `grille`
    """
    if 'a' <= lettre <= 'z':
        return grille[ord(lettre) - ord('a')] # déchiffrement
    elif 'A' <= lettre <= 'Z':
        lettre_minuscule = grille[ord(lettre) - ord('A')] # déchiffrement
        lettre_majuscule = chr(ord(lettre_minuscule) - ord('a') + ord('A'))
        return lettre_majuscule
    else:
        return lettre    # aucun changement

grille = list(input())
texte = input()
print("".join((déchiffre(lettre) for lettre in texte)))