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-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⚓︎

🐍 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