Exercice 5 - Question 4 · Bac Numérique et Sciences Informatiques Métropole 2 remplacement 2022

Thème : Récursivité · Tiré du sujet Métropole France 2 remplacement (2022)

Énoncé

EXERCICE 5 (4 points)

Cet exercice porte sur la programmation de base en Python et sur la récursivité.

Le Scrabble est un jeu de société qui se joue à plusieurs joueurs. Chaque joueur pioche des jetons sur lesquels sont inscrites une lettre majuscule et sa valeur.

Le joueur propose ensuite un mot qu'il dispose sur un plateau de jeu en plaçant un jeton par case.

Certaines cases permettent une bonification.

4. Pour passer le temps entre deux tours, Lucien décide de chercher les anagrammes d'un mot. L'anagramme d'un mot est un nouveau mot formé en changeant de place les lettres du mot initial.

Ainsi CARTE est une anagramme du mot ACTER.

On se propose d'écrire une fonction récursive anagramme qui a pour paramètres deux chaînes de caractères mot1 et mot2 et qui renvoie True si mot2 est une anagramme de mot1 et False sinon.

Pour cela, on dispose d'une fonction enlever:

enlever (mot, c) renvoie mot privé de la première occurrence du caractère c

Ainsi l'instruction enlever('scrabble','b') renvoie 'scrable'.

Voici le squelette de la fonction à compléter:

def anagramme(mot1, mot2):

if len(mot1) != len(mot2):

return # A compléter

elif len(mot1) == 0:

return # A compléter

elif not mot1[0] in mot2:

return # A compléter

else:

# Partie récursive à compléter Recopier et compléter la fonction récursive anagramme:

def anagramme(mot1, mot2):

Énoncé: Exercice 5 - Question 4 · Bac Numérique et Sciences Informatiques Métropole 2 remplacement 2022

Corrigé

Corrigé proposé par AprenAI (non officiel)

Recopier et compléter la fonction récursive anagramme.

Réponse : ```python if len(mot1) != len(mot2): return False elif len(mot1) == 0: return True elif not mot1[0] in mot2: return False else: return anagramme(mot1[1:], enlever(mot2, mot1[0])) ``` ```python if len(mot1) != len(mot2): return False elif len(mot1) == 0: return True elif mot1[0] not in mot2: return False else: return anagramme(mot1[1:], enlever(mot2, mot1[0])) ```

L’explication pas à pas, faite avec l’IA, est réservée aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

‹ Exercice 2 - Récursivité · Métropole 1 remplacement 2022 · Exercice 4 - Mélange récursif de Fischer-Yates · Métropole Candidat libre 2021 (sujet 2) ›

Plus d’exercices de Récursivité