Mot qui correspond à un mot à trou⚓︎
Mots à trou
- Un mot est ici une chaine de caractères composée uniquement de lettres de l'alphabet.
- Un mot à trous comporte également zéro, une ou plusieurs fois le caractère
"."
.
On dira que mot_complet
correspond à mot_a_trous
, si on peut remplacer chaque "."
de mot_a_trous
par une lettre de façon à obtenir mot_complet
.
"INFO.MA.IQUE"
est un mot à trous,"INFORMATIQUE"
est un mot qui lui correspond,"AUTOMATIQUE"
est un mot qui ne lui correspond pas.
Objectif
Écrire une fonction telle que correspond(mot_complet, mot_a_trous)
renvoie un booléen qui détermine si « mot_complet
correspond à mot_a_trous
»
Exemples
>>> correspond("INFORMATIQUE", "INFO.MA.IQUE")
True
>>> correspond("AUTOMATIQUE", "INFO.MA.IQUE")
False
>>> correspond("INFO", "INFO.MA.IQUE")
False
>>> correspond("INFORMATIQUES", "INFO.MA.IQUE")
False
def correspond(motpy-undcomplet, motpy-undapy-undtrous):bksl-nl ...bksl-nlbksl-nlbksl-nlbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert correspond("INFORMATIQUE", "INFO.MA.IQUE") == Truebksl-nlassert correspond("AUTOMATIQUE", "INFO.MA.IQUE") == Falsebksl-nlassert correspond("INFO", "INFO.MA.IQUE") == Falsebksl-nlassert correspond("INFORMATIQUES", "INFO.MA.IQUE") == Falsebksl-nlbksl-nlbksl-nldef correspond(motpy-undcomplet, motpy-undapy-undtrous):bksl-nl if len(motpy-undcomplet) != len(motpy-undapy-undtrous):bksl-nl return Falsebksl-nl for i in range(len(motpy-undcomplet)):bksl-nl if motpy-undapy-undtrous[i] != '.' and motpy-undapy-undtrous[i] != motpy-undcomplet[i]:bksl-nl return Falsebksl-nl return Truebksl-nlbksl-nl# testsbksl-nlbksl-nlassert correspond("INFORMATIQUE", "INFO.MA.IQUE") == Truebksl-nlassert correspond("AUTOMATIQUE", "INFO.MA.IQUE") == Falsebksl-nlassert correspond("INFO", "INFO.MA.IQUE") == Falsebksl-nlassert correspond("INFORMATIQUES", "INFO.MA.IQUE") == Falsebksl-nlbksl-nlbksl-nl
A
Version fonctionnelle⚓︎
def correspond(mot_complet, mot_a_trous):
return len(mot_complet) == len(mot_a_trous) and all(
mot_a_trous[i] == mot_complet[i] or mot_a_trous[i] == '.'
for i in range(len(mot_complet))
)
La fonction all
fait aussi une évaluation paresseuse et s'interrompt dès que False
est rencontré.
Z