Aller au contenu

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
🐍 Console Python
>>> correspond("INFORMATIQUE", "INFO.MA.IQUE")
True
>>> correspond("AUTOMATIQUE", "INFO.MA.IQUE")
False
>>> correspond("INFO", "INFO.MA.IQUE")
False
>>> correspond("INFORMATIQUES", "INFO.MA.IQUE")
False
###
# 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-nl# autres testsbksl-nlbksl-nlassert correspond("", "") == Truebksl-nlassert correspond("A", "A") == Truebksl-nlassert correspond("A", ".") == Truebksl-nlassert correspond("A", "B") == Falsebksl-nlassert correspond("TIQUE", "TIQUE") == Truebksl-nlassert correspond("TIQUE", ".IQUE") == Truebksl-nlassert correspond("TIQUE", "T.QUE") == Truebksl-nlassert correspond("TIQUE", "TI.UE") == Truebksl-nlassert correspond("TIQUE", "TIQ.E") == Truebksl-nlassert correspond("TIQUE", "TIQU.") == Truebksl-nlassert correspond("TIQUE", ".IQU.") == Truebksl-nlassert correspond("TIQUE", ".....") == Truebksl-nlassert correspond("TIQUE", "TIQUES") == Falsebksl-nlassert correspond("TIQUE", "ATIQUE") == Falsebksl-nlassert correspond("TIQUE", ".TIQUE") == Falsebksl-nlassert correspond("TIQUE", "TIQUE.") == Falsebksl-nlassert correspond("TIQUE", "TIQUF") == Falsebksl-nlassert correspond("TIQUE", "PIQUE") == Falsebksl-nlbksl-nlassert correspond("AB", "..") == Truebksl-nlassert correspond("BCA", ".B.") == Falsebksl-nlassert correspond("A", "..") == Falsebksl-nlassert correspond("A" py-str 101, "A" py-str 100 + ".") == Truebksl-nlbksl-nl 5/5

def correspond(motpy-undcomplet, motpy-undapy-undtrous):bksl-nl ...bksl-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-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

A

Version fonctionnelle⚓︎

🐍 Script Python
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