Défis de récursivité en Python
Défis de récursivité en Python
[Link]/challenges
Créez une fonction récursive qui prend deux paramètres et répète la chaîne n fois. Le
premier paramètre txt est la chaîne à répéter et le second paramètre est le nombre de
fois que la chaîne doit être répétée. Exemples repetition("ab", 3) ➞ "ababab"
repetition("kiwi", 1) ➞ "kiwi" repetition("cherry", 2) ➞ …
Créez une fonction qui recherche l'index d'un élément donné dans une liste. Si l'élément
est présent, elle doit renvoyer l'index, sinon, elle doit renvoyer -1. Exemples search([1, 2,
3, 4], 3) ➞ 2 search([2, 4, 6, 8, 10], 8) ➞ 3 search([1, 3, 5, 7, 9], 11) ➞ -1 Remarques Si
l'élément n'est pas présent, renvoie -1. La liste donnée est …
Créez une fonction qui calcule le nombre de cases différentes dans une grille de n * n
cases. Consultez l'onglet Ressources. Exemples number_squares(2) ➞ 5
number_squares(4) ➞ 30 number_squares(5) ➞ 55 Explication Si n = 0 alors le nombre
de cases est 0 Si n = 1 alors le nombre de cases est 1 + 0 = 1 Si n = 2 alors le nombre de
…
1/21
Renvoyer la factorielle
Créez une fonction qui prend un entier et renvoie la factorielle de cet entier. C'est-à-dire
l'entier multiplié par tous les entiers inférieurs positifs. Exemples factorial(3) ➞ 6
factorial(5) ➞ 120 factorial(13) ➞ 6227020800 Remarques Supposons que toutes les
entrées soient supérieures ou égales à 0.
Récursivité : Factorielles
Écrivez une fonction qui calcule la factorielle d'un nombre de manière récursive.
Exemples factorielle(5) ➞ 120 factorielle(3) ➞ 6 factorielle(1) ➞ 1 factorielle(0) ➞ 1
Remarques N/A
Récursivité : somme
Écrivez une fonction qui trouve la somme des n premiers nombres naturels. Rendez votre
fonction récursive. Exemples sum_numbers(5) ➞ 15 1 + 2 + 3 + 4 + 5 = 15
sum_numbers(1) ➞ 1 sum_numbers(12) ➞ 78 Remarques Supposons que le nombre
d'entrée soit toujours positif. Consultez l'onglet Ressources pour plus d'informations sur la
récursivité.
Un vendeur doit visiter plusieurs villes. Il souhaite calculer le nombre total de chemins
possibles qu'il pourrait emprunter, en visitant chaque ville une fois avant de rentrer chez
lui. Renvoyer le nombre total de chemins possibles qu'un vendeur peut emprunter, étant
donné n villes. Si nous avons les villes A, B et C, les chemins possibles seraient : A -> B -
> C A -> C -> B B …
2/21
PGCD de deux nombres
Écrivez une fonction qui renvoie le plus grand diviseur commun (PGCD) de deux entiers.
Exemples gcd(32, 8) ➞ 8 gcd(8, 12) ➞ 4 gcd(17, 13) ➞ 1 Remarques Les deux valeurs
seront positives. Le PGCD est le plus grand facteur qui divise les deux nombres.
La conjecture de Collatz
Créez une fonction, exemple : 10 est un nombre 10 est pair - 10 / 2 = 5 5 est impair - 5 *
3 + 1 = 16 16 est pair - 16 / 2 = 8 8 est pair - 8 / 2 = 4 4 est pair - 4 / 2 = 2 2 est pair - 2 / 2
= 1 -> si atteint 1, renvoie 6 étapes Considérons l'opération suivante sur un entier positif
arbitraire : si n est pair -> n / 2 si n est impair -> n * 3 + …
Double factorielle
Créez une fonction qui prend un nombre num et renvoie sa factorielle double.
Mathématiquement, les formules de la factorielle double sont les suivantes. Si num est
pair : num !! = num ( num - 2)( num - 4)( num - 6) ... (4)(2) Si num est impair : num !! =
num ( num - 2)(num - 4)(num - 6) ... (3)(1) Si num = 0 ou num = -1, alors num !! = 1 …
Récursivité : PGCD
Écrivez une fonction qui calcule le PGCD (plus grand diviseur commun) de deux nombres
de manière récursive. Exemples gcd(10, 20) ➞ 10 gcd(1, 3) ➞ 1 gcd(5, 7) ➞ 1 gcd(2, 6)
➞ 2 Remarques N/A
Bienvenue au début de cette collection sur les algorithmes informatiques. Certes, il existe
d'autres défis sur Edabit qui traitent de la récursivité et des processus algorithmiques,
mais ces défis particuliers sont conçus pour donner des exemples et pour éduquer les
utilisateurs sur les sujets abordés. Récursivité En informatique, « récursivité …
Exploration combinatoire
Étant donné un nombre connu d'éléments uniques, de combien de façons pourrions-nous
les organiser dans une rangée ? Créez une fonction qui prend un entier n et renvoie le
nombre de chiffres du nombre de permutations possibles pour n éléments uniques. Par
exemple, 5 éléments uniques pourraient être organisés de 120 façons uniques. 120 a 3
chiffres, donc l'entier 3 est …
3/21
Trouver le plus grand nombre pair
Écrivez une fonction qui trouve le plus grand nombre pair d'une liste. Renvoie -1 si non
trouvé. L'utilisation des fonctions intégrées max() et sorted() est interdite. Exemples
biggest_even([3, 7, 2, 1, 7, 9, 10, 13]) ➞ 10 biggest_even([1, 3, 5, 7]) ➞ -1
biggest_even([0, 19, 18973623]) ➞ 0 Remarques Pensez à utiliser l'opérateur modulo %
ou t …
Le nombre de Fibonacci
Créez une fonction qui, étant donné un nombre, renvoie la valeur correspondante de cet
index dans la suite de Fibonacci. La suite de Fibonacci est la série de nombres : 1, 1, 2,
3, 5, 8, 13, 21, 34, ... Le nombre suivant est trouvé en additionnant les deux nombres qui
le précèdent : Le 2 est trouvé en additionnant les deux nombres qui le précèdent (1+1).
Le 3 est …
Écrivez une fonction qui renvoie de manière récursive le nombre de voyelles dans une
chaîne. Si ce n'était pas déjà assez clair, vous devriez utiliser la récursivité dans votre
solution. Exemples voyelles("pomme") ➞ 2 voyelles("gâteau au fromage") ➞ 5
voyelles("bbb") ➞ 0 voyelles("") ➞ 0 Remarques Les fonctions récursives s'appellent
elles-mêmes. Toutes les lettres seront en minuscules. F …
4/21
L'opération de décalage à droite est similaire à la division du plancher par des puissances
de deux, le processus est donc répétitif et peut être effectué de manière récursive.
Exemple de calcul utilisant l'opérateur de décalage à droite ( >> ) : 80 >> 3 = floor(80/2^3)
= floor(80/8) = 10 -24 >> 2 = floor(-24/2^2) = floor(-24/4) = -6 -5 >> 1 = floor(-5/2^1) =
floor(-5/2) = -3 …
Pas de cris
Créez une fonction qui transforme les phrases se terminant par plusieurs points
d'interrogation ? ou d'exclamation ! en une phrase se terminant par un seul sans changer
la ponctuation au milieu des phrases. Exemples no_yelling("Qu'est-ce qui s'est mal
passé?????????") ➞ "Qu'est-ce qui s'est mal passé ?" no_yelling("Oh mon Dieu !!!") ➞
"Oh mon Dieu !" …
Persistance
Si vous prenez un entier et formez le produit de ses chiffres individuels, vous obtenez un
nombre plus petit. Continuez ainsi et vous finirez par obtenir un seul chiffre. Le nombre
d'étapes nécessaires pour atteindre ce point est la persistance multiplicative de l'entier.
Par exemple, 347 a une persistance de 3 : 347 = 84, 84 = 32, 32 = 6.
La séquence Perrin
Chaque nombre de la séquence de Perrin est créé en additionnant les nombres situés à
deux positions et à trois positions qui le précèdent. Les trois premiers nombres sont (3, 0,
2) et la séquence est étendue comme suit : P(0) P(1) P(2) P(3) P(4) P(5) P(6) P(7) ...
P(n) 3, 0, 2, 3, 2, 5, 5, 7, ... Étant donné une valeur pour n, renvoyer le nombre de Perrin
P(n). …
5/21
L'opération de décalage à gauche est similaire à la multiplication par des puissances de
deux, le processus est donc répétitif et peut être effectué de manière récursive. Exemple
de calcul utilisant l'opérateur de décalage à gauche ( << ) : 10 << 3 = 10 * 2^3 = 10 * 8 =
80 -32 << 2 = -32 * 2^2 = -32 * 4 = -128 5 << 2 = 5 * 2^2 = 5 * 4 = 20 Écrivez une fonction
récursive qui m …
Créez une fonction qui vérifie si un entier donné est exactement la factorielle d'un entier
ou non. Vrai si c'est le cas, Faux sinon. Exemples is_factorial(2) ➞ Vrai 2 = 2 * 1 = 2!
is_factorial(27) ➞ Faux is_factorial(24) ➞ Vrai 24 = 4 * 3 * 2 * 1 = 4! Remarques Aucune
gestion des erreurs n'est nécessaire. Les entrées sont toutes des entiers positifs. Un …
ABACABADABACABA
Créez une fonction qui suit la règle « ABACABADABACABA » jusqu'à une certaine lettre.
Le modèle abacabadabacaba consiste à commencer par la première lettre (a) et, à
chaque nouvelle lettre, à ajouter la lettre du milieu et les autres au début et à la fin. Par
exemple : A ➞ A B ➞ ABA C ➞ ABACABA D ➞ ABACABADABACABA E ➞ ABACABA
…
6/21
Créez une fonction qui prend une liste multidimensionnelle et renvoie le nombre total de
nombres dans cette liste. Exemples count_number([["", 17.2, 5, "edabit"]]) ➞ 2 17.2 et 5.
count_number([[[[[2, 14]]], 2, 3, 4]]) ➞ 5 2, 14, 2, 3 et 4. count_number([["number"]]) ➞ 0
Remarques L'entrée peut être une liste de nombres, des chaînes et des listes vides.
Zéros à droite
Mubashir a besoin de votre aide pour trouver les zéros de fin après avoir calculé la
factorielle d'un nombre donné. Créez une fonction qui prend un nombre n et calcule le
nombre de zéros de fin dans la factorielle du nombre donné. n! = 1 * 2 * 3 * ... * n
Exemples trailing_zeros(0) ➞ 0 0! = 1 Pas de zéro de fin. trailing_zeros(6) ➞ 1 6 …
Nombre pentagonal
Écrivez une fonction qui prend un entier positif num et calcule le nombre de points
existant dans une forme pentagonale autour du point central à la N-ième itération. Dans
l'image ci-dessous, vous pouvez voir que la première itération n'est constituée que d'un
seul point. Sur la deuxième, il y a 6 points. Sur la troisième, il y a 16 points et sur la
quatrième, il y a 31 points…
Créez une fonction qui détermine si une séquence donnée est linéaire, quadratique ou
cubique. L'entrée sera une liste de nombres de longueurs variées. La fonction doit
renvoyer « Linéaire », « Quadratique » ou « Cubique ». Exemples seq_level(1, 2, 3, 4, 5)
➞ « Linéaire » seq_level(3, 6, 10, 15, 21) ➞ « Quadratique » seq_level(4, 14, 40, 88,
164) ➞ « Cub …
Le vide naturel
En théorie abstraite des ensembles, une construction due à von Neumann représente les
nombres naturels par des ensembles, comme suit : 0 = \[ \] est l'ensemble vide 1 = 0 ∪ \[
0 \] = \[ 0 \] = \[ \[ \] \] 2 = 1 ∪ \[ 1 \] = \[ 0, 1 \] = \[ \[ \], \[ \[ \] \] \] n = n−1 ∪ \[ n−1 \] = ...
Écrire une fonction qui reçoit un entier n et produit la repr …
La séquence Collatz
La séquence de Collatz est la suivante : on commence avec un entier donné n. S'il est
pair, le nombre suivant sera n divisé par 2. S'il est impair, on le multiplie par 3 et on ajoute
1 pour obtenir le nombre suivant. La séquence s'arrête lorsqu'elle atteint 1. Selon la
conjecture de Collatz, elle atteindra toujours 1. Si c'est vrai, on peut construire une …
Créez une fonction qui additionne tous les éléments de la liste de manière récursive.
L'utilisation de la fonction intégrée sum() n'est pas autorisée, l'approche est donc
récursive. Exemples recur_add([1, 2, 3, 4, 10, 11]) ➞ 31 recur_add([-3, 4, 11, 10, 21, 32,
-9]) ➞ 66 recur_add([-21, -7, 19, 3, 4, -8]) ➞ -10 Remarques Vous devez résoudre …
7/21
La fonction Kempner
La fonction Kempner, appliquée à un nombre composé, permet de trouver le plus petit
entier supérieur à zéro dont la factorielle est exactement divisée par le nombre.
kempner(6) ➞ 3 1! = 1 % 6 > 0 2! = 2 % 6 > 0 3! = 6 % 6 === 0 kempner(10) ➞ 5 1! = 1
% 10 > 0 2! = 2 % 10 > 0 3! = 6 % 10 > 0 4! = 24 % 10 > 0 5! = 120 % 10 === 0 …
Bienvenue dans la troisième partie de la collection sur les algorithmes informatiques. Une
fois de plus, nous allons nous plonger dans la récursivité en abordant le sujet des
recherches binaires. Une « recherche binaire » est un algorithme de recherche utilisé sur
un tableau déjà trié. Il compare la valeur cible à l'élément central d'un tableau. S'ils ne
correspondent pas, t …
Tracteur Factor
Écrivez une fonction pour trouver tous les facteurs premiers d'un entier donné. La
fonction doit renvoyer une liste contenant tous les facteurs premiers, triés par ordre
croissant. N'oubliez pas que 1 n'est ni premier ni composé et ne doit pas être inclus dans
votre liste de sortie. Exemples prime_factorize(25) ➞ [5, 5] prime_factorize(19) ➞ [19] pri
…
Récursivité de Fibonacci
La suite de Fibonacci est un cas d'utilisation classique pour les fonctions récursives
puisque la valeur de la séquence à un index donné dépend des deux dernières valeurs.
Plus précisément, elle dépend de la somme des deux valeurs précédentes. Écrivez une
fonction nommée fib qui prend un entier n en entrée. Elle doit renvoyer la suite de
Fibonacci …
Écrivez une fonction qui renverra le mot le plus long d'une phrase. Dans les cas où
plusieurs mots sont trouvés, renvoyez le premier. Exemples find_longest("Une chose de
beauté est une joie pour toujours.") ➞ "pour toujours" find_longest("L'oubli est impuissant
8/21
!") ➞ "oubli" find_longest("\"Les forces\" sont les mots les plus longs …
L'escalier de la récursivité
Écrivez une fonction qui renvoie le nombre de façons dont une personne peut monter n
marches, où la personne ne peut monter que 1 ou 2 marches à la fois. Pour illustrer, si n
= 4, il y a 5 façons de monter : [1, 1, 1, 1] [2, 1, 1] [1, 2, 1] [1, 1, 2] [2, 2] Exemples
waystoclimb(1) ➞ 1 waystoclimb(2) ➞ 2 waystoclimb(5) ➞ 8 Notes Un escalier de …
Créez une fonction qui prend une liste et renvoie le nombre de TOUS les éléments qu'elle
contient (y compris ceux des listes de sous-niveaux). Exemples deep_count([1, 2, 3]) ➞ 3
deep_count([[1], [2], [3]]) ➞ 6 deep_count(["x", "y", ["z"]]) ➞ 4 deep_count(["a", "b", ["c",
"d", ["e"]]]) ➞ 7 Remarques Dans les exemples ci-dessus, remarquez comment t …
algorithmes
tableaux
récursivité
Difficile
Ajouter à la collection
La méthode len() de Python renvoie le nombre d'éléments dans une liste. Par exemple, la
liste ci-dessous contient 2 éléments : [1, [2, 3]] 2 éléments, numéro 1 et liste [2, 3]
Supposons que nous voulions plutôt connaître le nombre total d'éléments non imbriqués
dans la liste imbriquée. Dans le cas ci-dessus, [1, [2, 3]] contient 3 éléments non
imbriqués, 1, 2 et …
Écrivez une fonction qui, étant donné les valeurs start startnum et end endnum, renvoie
une liste contenant tous les nombres inclus dans cette plage. Voir les exemples ci-
dessous. Exemples inclusive_list(1, 5) ➞ [1, 2, 3, 4, 5] inclusive_list(2, 8) ➞ [2, 3, 4, 5, 6,
7, 8] inclusive_list(10, 20) ➞ [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] dans …
9/21
Clôture en somme
Créez une fonction qui renvoie la somme des chiffres formés à partir du premier et du
dernier chiffre, jusqu'au centre du nombre. Exemple concret closinginsum(2520) ➞ 72 Le
premier et le dernier chiffre sont 2 et 0. 2 et 0 forment 20. Le deuxième chiffre est 5 et
l'avant-dernier chiffre est 2. 5 et 2 forment 52. 20 + 52 = 72 Exemple …
Créez une fonction qui prend une liste. Cette liste peut contenir toutes sortes de
primitives, même d'autres listes. La fonction doit renvoyer une liste unique, plate et
unidimensionnelle avec tous les éléments. Voici les conditions : Si l'élément est une liste,
incluez-y chaque élément et les conditions suivantes s'appliquent toujours : Si l'élément
est une primitive, incluez-la …
Créez une fonction qui compte de manière récursive le nombre de chiffres de l'entier.
Exemples count(318) ➞ 3 count(-92563) ➞ 5 count(4666) ➞ 4 count(-314890) ➞ 6
count(654321) ➞ 6 count(638476) ➞ 6 Remarques Vous devez résoudre ce défi par
récursivité. Vous pouvez consulter l'onglet Ressources pour plus de détails sur la
récursivité. Un …
Créez une fonction qui prend une liste multidimensionnelle et la convertit (de manière
récursive) en une liste unidimensionnelle et la renvoie. Utilisez une approche
RÉCURSIVE. Exemples flatten([[17.2, 5, "code"]]) ➞ [17.2, 5, "code"] flatten([[[[[2, 14,
"rubber"]]], 2, 3, 4]])) ➞ [2, 14, "rubber", 2, 3, 4] flatten([["dimension"]]) ➞ ["dimen …
La fonction heureuse
10/21
Dans ce défi, vous devez implémenter un algorithme pour établir si un entier positif donné
num est un nombre de Happy, et combien d'étapes de l'algorithme sont nécessaires pour
l'établir. Vous devez transformer à plusieurs reprises le num donné en la somme de ses
chiffres au carré : Si après la transformation le nouveau nombre est égal à 1, nu …
Modèle ABACABA
Le motif ABACABA est un motif fractal récursif qui apparaît dans de nombreux endroits
du monde réel (comme dans la géométrie, l'art, la musique, la poésie, les systèmes
numériques, la littérature et les dimensions supérieures). Créez une fonction qui prend un
nombre n comme argument et renvoie une chaîne qui représente le motif complet.
Exemples abacaba_patter …
Chiffre récursif
Nous définissons le super chiffre d'un entier x en utilisant les règles suivantes : Si x n'a
qu'un seul chiffre, alors son super chiffre est x. Sinon, le super chiffre de x est égal au
super chiffre de la somme des chiffres de x. Par exemple, le super chiffre de x sera
calculé comme suit : super_digit(9875) 9+8+7+5 = 29 super_digit(29) 2 …
Un nombre pronique (ou autrement appelé hétéromèque) est un nombre qui est un
produit de deux entiers consécutifs, c'est-à-dire un nombre de la forme n(n + 1). Créez
une fonction qui détermine si un nombre est pronique ou non. Exemples
is_heteromecic(0) ➞ True 0 * (0 + 1) = 0 * 1 = 0 is_heteromecic(2) ➞ True 1 * (1 + 1) = 1
*2…
11/21
On dit qu'un nombre est un Disarium si la somme de ses chiffres élevés à leurs positions
respectives est le nombre lui-même. Créez une fonction qui détermine si un nombre est
un Disarium ou non. Exemples is_disarium(75) ➞ False 7^1 + 5^2 = 7 + 25 = 32
is_disarium(135) ➞ True 1^1 + 3^2 + 5^3 = 1 + 9 + 125 = 135 is_disarium(544) …
Créez une fonction qui comptera de manière récursive le nombre de chiffres d'un
nombre. La conversion du nombre en chaîne n'est pas autorisée, l'approche est donc
récursive. Exemples digits_count(4666) ➞ 4 digits_count(544) ➞ 3 digits_count(121317)
➞ 6 digits_count(0) ➞ 1 digits_count(12345) ➞ 5 digits_count(1289396387328) ➞ 1 …
Ava, Mark, Sheila et Pete sont à une fête. Cependant, Ava et Sheila ne restent que s'il y
a au moins 4 personnes, Pete ne reste que s'il y a 1 personne et Mark ne reste que s'il y
a au moins 5 personnes. Par conséquent, Mark part, ce qui fait que Ava et Sheila partent,
et Pete se retrouve seul. Étant donné une liste avec les préférences …
Un palindrome est une série de lettres ou de chiffres qui se lit de manière équivoque à
l'envers. Écrivez une fonction récursive qui détermine si une chaîne donnée est un
palindrome ou non. Exemples is_palindrome("Allez accrocher un salami, je suis un
cochon de lasagnes !") ➞ True is_palindrome("Cette phrase, sûrement, n'est pas un
palindrome !") ➞ False is_palindrome(" …
12/21
Nombre de chemins entre les points
Ce défi consiste à trouver et à compter le nombre de chemins entre des points sur une
grille rectiligne. Un point de départ (x, y) avec des coordonnées entières non négatives
est fourni. Vous n'êtes autorisé à vous déplacer que horizontalement et verticalement le
long de la grille. Ainsi, de (x, y) vous pouvez vous déplacer vers (x+1, y), (x-1, y), (x, y+1)
ou (x, y …
Descendant du palindrome
Un nombre peut ne pas être un palindrome, mais son descendant peut l'être. L'enfant
direct d'un nombre est créé en additionnant chaque paire de chiffres adjacents pour créer
les chiffres du nombre suivant. Par exemple, 123312 n'est pas un palindrome, mais son
enfant suivant 363 l'est, où : 3 = 1 + 2 ; 6 = 3 + 3 ; 3 = 1 + 2. Créez une fonction qui
renvoie True si …
Créez une fonction qui utilise la recherche de bissection pour calculer la valeur
approximative de la racine carrée d'un nombre. Utilisez n'importe quel entier ou nombre à
virgule flottante comme argument. Utilisez une variable delta de 0,01 pour savoir quand
un résultat est valide (c'est-à-dire si le résultat au carré est compris entre n - delta et n +
delta, il est considéré comme valide). Exemples bisec_sqrt(69) …
Distributeur automatique
Votre tâche consiste à créer une fonction qui simule un distributeur automatique. Étant
donné une somme d'argent (en centimes ¢ pour simplifier) et un numéro de produit, le
distributeur doit afficher le nom de produit correct et rendre la monnaie correcte. Les
pièces utilisées pour rendre la monnaie sont les suivantes : [500, 200, 100, 50, 20, 1 …
Message de l'espace
Vous avez reçu un message chiffré en provenance de l'espace. Votre tâche consiste à
déchiffrer le message en suivant les règles simples suivantes : La chaîne de message
sera composée uniquement de lettres majuscules, de chiffres et de crochets. Lorsqu'il y a
un bloc de code à l'intérieur des crochets, comme [10AB], cela signifie que vous devez
répéter les lettres AB 10 fois. Message …
13/21
Dans le problème de l'escalier récursif, votre tâche consiste à trouver le nombre de
façons de monter un escalier de n marches, avec un ensemble s marches possibles.
L'exemple ci-dessous montre que si n était 2 et s était { 1, 2 }, la réponse serait 2 : _ _ |2
Vous pouvez soit passer de l'étape 0-2 (car l'ensemble s contient 2), soit _ | 1 vous …
Une liste qui représente un arbre binaire se présente sous la forme suivante : binarytree
= [val, lstleft, lst_right] Lorsque lstleft est le côté gauche de l'arbre et lstright le côté droit
de l'arbre. Pour illustrer : list1 = [3, [ 8, [ 5, None, None], None], [ 7, None, None]] list1
représente l'arbre binaire suivant : …
Constante de Kaprekar
6174 est connu comme l'une des constantes de Kaprekar, d'après le mathématicien
indien DR Kaprekar. Le nombre 6174 est remarquable pour la règle suivante : prenez
n'importe quel nombre à quatre chiffres, en utilisant au moins deux chiffres différents (les
zéros non significatifs sont autorisés). Disposez les chiffres par ordre décroissant puis par
ordre croissant pour obtenir deux nombres à quatre chiffres, …
Écrivez une fonction qui, étant donné les valeurs de début et de fin, renvoie un tableau
contenant tous les nombres compris dans cette plage. Voir les exemples ci-dessous.
Exemples reversibleinclusivelist(1, 5) ➞ [1, 2, 3, 4, 5] reversibleinclusivelist(2, 8) ➞ [2, 3,
4, 5, 6, 7, 8] reversibleinclusivelist(10, 20) ➞ [10, 11, 12, 13, 14, 15, 16, 17, 1 …
14/21
liste intégrées, mais l'approche requise est récursive. Exemples iso_group([31, 7, 2, 13,
7, 9, 10, 13]) ➞ …
Créez une fonction qui peut imbriquer une liste plate pour représenter une séquence de
niveaux de profondeur incrémentielle. Exemples incremental_depth([1, 2]) ➞ [1, [2]]
incremental_depth([1, 2, 3, 4, 5]) ➞ [1, [2, [3, [4, [5]]]]] incremental_depth([1, 3, 2, 6]) ➞
[1, [3, [2, [6]]]] incremental_depth(["chien", "chat", "vache"]) ➞ ["chien", ["chat", ["vache"]]]
…
Écrivez une fonction récursive qui renverra le mot le plus long d'une phrase. Dans les cas
où plusieurs mots sont trouvés, renvoyez le premier. Exemples find_longest("Je t'aimerai
et t'aimerai toujours avec gratitude et perpétualité, Tesh !") ➞ "perpétuellement"
find_longest("Une chose de beauté est une joie pour toujours.") ➞ "pour toujours"
find_lon …
Créez une fonction récursive qui teste si un nombre est la borne supérieure exacte de la
factorielle de n. Si c'est le cas, renvoyez une liste qui contient la borne exacte de la
factorielle et n, ou sinon, la chaîne « Pas exact ! ». Exemples is_exact(6) ➞ [6, 3]
is_exact(24) ➞ [24, 4] is_exact(125) ➞ « Pas exact ! » is_exact(720) ➞ [720, 6] is_exac
…
Récursivité : le Out-Shuffle
15/21
la carte supérieure du jeu reste en place. L'utilisation d'un tableau pour représenter un
mélange de cartes est un moyen de contrôler le mélange des cartes.
Créez une fonction qui construira un escalier en utilisant les symboles de soulignement _
et de dièse #. Une valeur positive indique la direction ascendante de l'escalier et une
valeur négative indique la direction descendante. Exemples escalier(3) ➞ "_#\n##\n###"
__ _ escalier(7) ➞ "_#\n##\n####\n######\n######\n########" __ _ __ _ __ _
escalier(2) ➞ "_#\n##" …
L'opération modulo peut également être effectuée par soustraction ou addition répétitive.
Dans ce défi, vous allez créer une fonction qui imite une telle opération et renvoie le
modulo des deux nombres donnés en les soustrayant ou en les ajoutant de manière
récursive. Exemples modulo(100, 25) ➞ 0 modulo(-51, -4) ➞ -3 modulo(3, 9) ➞ 3 modu
…
Créez une fonction qui renvoie le produit de deux entiers. Ce processus de multiplication
peut être réalisé via une addition répétitive, ainsi, le processus peut être effectué de
manière récursive. Exemples multiplier(10, 2) ➞ 20 multiplier(-51, -4) ➞ 204 multiplier(3,
9) ➞ 27 multiplier(-21, 5) ➞ -105 multiplier(1024, 7) ➞ 7168 multiplier(273, -6) ➞ -1 …
Écrivez une fonction récursive qui filtre les éléments d'une liste (donnée comme
paramètre arr) par parité positionnelle (impaire ou paire), donnée comme paramètre par,
en commençant par l'extrémité opposée. Renvoie une liste d'éléments sur des positions
impaires (... 5, 3, 1) ou sur des positions paires (... 6, 4, 2) et en comptant à partir du
dernier élément de la liste. Exemples getit …
16/21
entièrement sous forme d'objet ; ou un objet vide si l'argument passé est None, une
chaîne vide, …
Permutation de Josèphe
Un groupe de n prisonniers se tient en cercle en attendant leur exécution. En partant
d'une position arbitraire (0), le bourreau tue chaque k-ième personne jusqu'à ce qu'il ne
reste qu'une seule personne debout, à laquelle on accorde alors la liberté (voir les
exemples). Créez une fonction qui prend 2 arguments — le nombre de personnes à
exécuter n, et la taille du pas k, et …
On vous donne un jeu de fléchettes divisé en sections, chaque section ayant un score
unique. Cela signifie qu'il n'y aura pas deux sections avec le même score. En lançant un
certain nombre de fléchettes valides, trouvez combien de solutions il y a pour atteindre le
score cible. Votre fonction recevra trois paramètres... Sections : Une liste de valeurs pour
…
La suite de Farey d'ordre n est l'ensemble de toutes les fractions dont le dénominateur
est compris entre 1 et n (réduites à leurs plus petits termes et ordonnées par ordre
croissant). Étant donné un n, écrivez une fonction qui renvoie la suite de Farey sous
forme de liste, avec une représentation sous forme de chaîne de caractères de chaque
fraction de la forme « numérateur/dénominateur ». Exemples farey(1) ➞ [" …
L'imbrication des listes peut être considérée indirectement comme des courbes et des
barrières des données réelles intégrées dans les listes, ce qui va à l'encontre de l'objectif
même d'y accéder directement via des index et des tranches. Dans ce défi, une fonction
est nécessaire pour aplatir ces courbes (c'est-à-dire niveler, repasser, compresser, raser,
renverser) et exposer ces données sous forme de si …
17/21
chaîne uniquement ce caractère. Si le nombre n de caractères répétés x est supérieur à
un, un …
Écrivez une fonction qui renvoie le plus petit entier d'une liste avec son index
correspondant et sa parité. Bien que ces tâches puissent être réalisables de manière
équivoque avec l'utilisation de certaines fonctions intégrées et de liste, le but et l'intention
de ce défi sont de vous permettre de le résoudre de manière récursive. Structure de
sortie : {"@index " + indexofsma …
Séquence de nombres
Écrivez une fonction récursive qui accepte un entier n et renvoie une séquence de n
entiers sous forme de chaîne, descendant de n à 1 puis remontant de 1 à n comme dans
les exemples ci-dessous : Exemples number_sequence(1) ➞ "1" number_sequence(2) ➞
"1 1" number_sequence(3) ➞ "2 1 2" number_sequence(4) ➞ "2 1 1 2" number_sequen
…
Collision d'astéroïdes
On vous donne une liste d'astéroïdes d'entiers représentant des astéroïdes dans une
rangée. Pour chaque astéroïde, la valeur absolue représente sa taille et le signe
représente sa direction (positif signifiant droite, négatif signifiant gauche). Chaque
astéroïde se déplace à la même vitesse. Déterminez l'état des astéroïdes après toutes
les collisions. Si deux …
Planter l'herbe
Le problème de Josèphe
Transposition en spirale
Créez une fonction qui prend une liste bidimensionnelle comme argument et renvoie une
liste unidimensionnelle avec les valeurs de la liste 2D d'origine qui sont organisées en
spirale (en commençant par le coin supérieur gauche). Exemples spiral_transposition([
18/21
[7, 2], [5, 0] ]) ➞ [7, 2, 0, 5] spiral_transposition([ [1, 2, 3], [ …
Un sac à dos
Étant donné un sac à dos avec une certaine capacité de poids, remplissez-le avec un
butin provenant d'une liste d'objets pour obtenir la valeur la plus élevée possible. La
fonction prend deux paramètres : un entier spécifiant le poids maximal que le sac à dos
peut contenir et une liste d'éléments du dictionnaire parmi lesquels choisir. Chaque
élément a un nom, un poids et une valeur. Le total …
Étant donné un nombre positif sous forme de chaîne, multipliez le nombre par 11 et
renvoyez-le également sous forme de chaîne. Cependant, il y a un piège : vous n'êtes
PAS AUTORISÉ à convertir simplement la chaîne numérique en un entier ! Maintenant,
comment ce défi est-il possible ? Malgré cela, il existe toujours un moyen de le résoudre,
et cela implique de réfléchir à la façon dont quelqu'un ...
Une grille de lettres peut contenir un mot caché quelque part à l'intérieur. Les lettres du
mot peuvent être tracées à partir de la lettre de départ en déplaçant une seule lettre à la
fois, vers le haut, le bas, la gauche ou la droite. Par exemple, supposons que nous
cherchions le mot BISCUIT dans cette grille : [ ["B","I","T","R"], ["I","U","A","S"],
["S","C","V","W"], …
Écrivez une fonction qui renverra True si une chaîne donnée (divisée et groupée en une
taille) contient un ensemble de nombres consécutifs croissants, sinon, renverra False.
IMPORTANT La solution attendue pour ce défi est effectuée de manière récursive.
Veuillez consulter l'onglet Ressources pour plus de détails sur la récursivité si nécessaire.
…
Résultats de football
Créez une fonction qui renvoie la partie entière du résultat d'une division entre deux
nombres. Ce processus de division peut être réalisé via une soustraction répétitive, il
peut donc être effectué de manière récursive. Exemples diviser(10, 2) ➞ 5 diviser(-51, -4)
➞ 12 diviser(3, 9) ➞ 0 diviser(-21, 5) ➞ -4 diviser(1024, 7) ➞ 146 diviser(273 …
19/21
Récursivité : indices et valeurs extrêmes
Écrivez une fonction qui extrait les limites supérieure et inférieure des éléments de la
liste, par valeur, y compris son index correspondant, par liste. Bien que ces tâches soient
réalisables à l'aide de certaines fonctions Array intégrées, le but et l'intention de ce défi
sont de le résoudre de manière récursive. Structure de sortie : [ …
Écrivez une fonction qui renverra True si une chaîne donnée (divisée et groupée en une
taille) contient un ensemble de nombres consécutifs (quelle que soit l'orientation :
ascendante ou descendante), sinon, renverra False. IMPORTANT La solution attendue
pour ce défi est effectuée de manière récursive. Veuillez consulter le tableau Ressources
…
Créez une fonction (étant donné le nombre de disques et le numéro de déplacement) qui
renvoie sous forme de tuple les tours avec leurs disques corrects dans l'ordre. Qu'est-ce
que la Tour de Hanoi ? La Tour de Hanoi est un problème qui se produit, où vous devez
déplacer une certaine quantité de disques d'un piquet (ou d'une tour) au piquet final. Les
disques sont empilés sur des piquets avec …
Numéros de vampires
Un nombre vampire est un entier positif supérieur à 99, qui, réorganisé dans toutes ses
permutations de chiffres possibles, chaque permutation étant divisée en deux parties, est
égal au produit d'au moins une de ses permutations. Si le nombre a une quantité paire de
chiffres, les parties gauche et droite auront la même longueur dans e …
Créez une fonction qui prend une plage de nombres et renvoie la somme de chaque
chiffre du début à la fin. Exemples digits_sum(1, 10) ➞ 46 le total des nombres dans la
plage est = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 la somme de chaque chiffre est = 1 + 2 + 3 + 4 + 5
+ 6 + 7 + 8 + 9 + 1 + 0 = 46 digits_sum(1, 20) ➞ 102 digits_sum(1, 100) ➞ 901
Remarques …
Trouver un entier pair dans une liste est assez trivial et superficiel pour la plupart des
passionnés de programmation. Ce défi le portera au niveau supérieur. Écrivez une
fonction qui renvoie le plus grand entier pair d'une liste avec son index correspondant et
la parité de cet index, mais la détermination de la parité de cet index est limitée…
20/21
La fonction reçoit une chaîne contenant des caractères minuscules. Divisez la chaîne en
autant de sous-chaînes que possible de sorte que chaque caractère n'apparaisse que
dans une seule sous-chaîne. Renvoie la liste des longueurs des sous-chaînes
résultantes. Exemples split_string("abbccc"), [1, 2, 3] "a", "bb", "ccc"
split_string("abbacdceef"), [4, 3, 2, 1] …
Un trie est un type spécialisé de structure de données arborescente. Lorsqu'il est utilisé
dans le contexte d'un dictionnaire, chaque nœud stocke l'alphabet entier et les mots
peuvent être récupérés en parcourant une partie de branche de l'arbre. La structure d'un
arbre trie est un ensemble de tries liées émanant d'un trie de tête. Chaque trie contient un
ensemble de pointeurs ( …
21/21