0% ont trouvé ce document utile (0 vote)
81 vues21 pages

Défis de récursivité en Python

Le document présente une série de défis de programmation en Python, principalement axés sur la récursivité et les algorithmes. Chaque défi inclut une description de la tâche à accomplir, des exemples d'entrée et de sortie, ainsi que des remarques pour guider les utilisateurs. Les problèmes abordent des concepts variés tels que la répétition de chaînes, la recherche d'index, le calcul de la factorielle, et bien d'autres.

Transféré par

Aymen Marghli
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
81 vues21 pages

Défis de récursivité en Python

Le document présente une série de défis de programmation en Python, principalement axés sur la récursivité et les algorithmes. Chaque défi inclut une description de la tâche à accomplir, des exemples d'entrée et de sortie, ainsi que des remarques pour guider les utilisateurs. Les problèmes abordent des concepts variés tels que la répétition de chaînes, la recherche d'index, le calcul de la factorielle, et bien d'autres.

Transféré par

Aymen Marghli
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

2,500+ Python Practice Challenges // Edabit

[Link]/challenges

Récursivité pour répéter une chaîne n fois

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) ➞ …

Trouver l'index (partie 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 …

Nombre de cases dans une grille N*N

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

Récursivité : somme de tableaux


Écrivez une fonction qui trouve la somme d'une liste. Rendez votre fonction récursive.
Exemples sum_recursively([1, 2, 3, 4]) ➞ 10 sum_recursively([1, 2]) ➞ 3
sum_recursively([1]) ➞ 1 sum_recursively([]) ➞ 0 Remarques Renvoyer 0 pour une liste
vide. Consultez l'onglet Ressources pour plus d'informations sur la récursivité.

Additionner les nombres à partir d'un seul nombre


Créez une fonction qui prend un nombre comme argument. Additionnez tous les nombres
de 1 au nombre que vous avez passé à la fonction. Par exemple, si l'entrée est 4, votre
fonction doit renvoyer 10 car 1 + 2 + 3 + 4 = 10. Exemples add_up(4) ➞ 10 add_up(13)
➞ 91 add_up(600) ➞ 180300 Remarques Attendez-vous à tout nombre positif compris
entre …

Récursivité : longueur d'une chaîne


Écrivez une fonction qui renvoie la longueur d'une chaîne. Rendez votre fonction
récursive. Exemples length("apple") ➞ 5 length("make") ➞ 4 length("a") ➞ 1 length("") ➞
0 Remarques Consultez l'onglet Ressources pour plus d'informations sur la récursivité.

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é.

Problème du voyageur de commerce

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 …

Récursivité : somme de multiplication


Étant donné un nombre, renvoie la somme totale de ce nombre multipliée par chaque
nombre compris entre 1 et 10. N'utilisez pas la fonction intégrée sum(). Exemples
multi_sum(1) ➞ 55 1 x 1 + 1 x 2 + 1 x 3 ...... 1 x 9 + 1 x 10 = 55 multi_sum(6) ➞ 330 6 x 1
+ 6 x 2 + 6 x 3 ...... 6 x 9 + 6 x 10 = 330 multi_sum(10) ➞ 550 multi_sum(8) ➞ 440 …

Récursivité : inverser une chaîne


Écrivez une fonction qui inverse une chaîne. Rendez votre fonction récursive. Exemples
reverse("hello") ➞ "olleh" reverse("world") ➞ "dlrow" reverse("a") ➞ "a" reverse("") ➞ ""
Remarques Pour les cas non fondamentaux, votre fonction doit s'appeler elle-même au
moins une fois. Consultez l'onglet Ressources pour plus d'informations sur la récursivité.

Récursivité : nombres de Fibonacci


Les nombres de Fibonacci sont créés de la manière suivante : F(0) = 0 F(1) = 1 ... F(n) =
F(n-2) + F(n-1) Écrivez une fonction qui calcule le n-ième nombre de Fibonacci.
Exemples fib(0) ➞ 0 fib(1) ➞ 1 fib(2) ➞ 1 fib(8) ➞ 21 Remarques N/A

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

Trouver l'entier le plus élevé de la liste à l'aide de la récursivité


Créez une fonction qui trouve l'entier le plus élevé de la liste en utilisant la récursivité.
Exemples find_highest([-1, 3, 5, 6, 99, 12, 2]) ➞ 99 find_highest([0, 12, 4, 87]) ➞ 87
find_highest([8]) ➞ 8 Remarques Veuillez utiliser la récursivité pour résoudre ce
problème (pas la méthode max()).

Algorithmes I : Introduction à la récursivité

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 …

Récursivité : compter les voyelles

É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 …

Récursivité : palindromes de chaînes


Écrivez une fonction qui détermine de manière récursive si une chaîne est un palindrome.
Exemples is_palindrome("abcba") ➞ True is_palindrome("b") ➞ True is_palindrome("") ➞
True is_palindrome("ad") ➞ False Remarques Une chaîne vide est considérée comme un
palindrome.

Algorithmes II : L'algorithme d'Euclide


Bienvenue dans la deuxième partie de la collection Algorithmes informatiques. Ce défi
traitera plus en détail de l'écriture de fonctions récursives en couvrant l'algorithme
d'Euclide. L'algorithme d'Euclide est une méthode permettant de trouver le plus grand
diviseur commun (PGCD) de deux nombres. Il a été décrit à l'origine par le
mathématicien grec …

Conversion d'une chaîne binaire en une autre


Écrivez une fonction qui renvoie le nombre minimum d'échanges pour convertir la
première chaîne binaire en seconde. Exemples min_swaps("1100", "1001") ➞ 1
min_swaps("110011", "010111") ➞ 1 min_swaps("10011001", "01100110") ➞ 4
Remarques Les deux chaînes binaires auront la même longueur. Les deux chaînes
binaires auront un nombre égal de z …

Récursivité : Décalage à droite par division

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). …

Petit con persistant


Créez une fonction qui prend un entier et renvoie sa persistance multiplicative, qui est le
nombre de fois que vous devez multiplier les chiffres de num jusqu'à atteindre un seul
chiffre. Exemples bugger(39) ➞ 3 Parce que 3 * 9 = 27, 2 * 7 = 14, 1 * 4 = 4 et 4 n'a qu'un
seul chiffre. bugger(999) ➞ 4 Parce que 9 * 9 * 9 = 729, 7 * 2 * 9 …

Racine de la somme des chiffres


Créez une fonction qui prend un nombre et renvoie un chiffre qui est le résultat de la
somme de tous les chiffres du nombre d'entrée. Lorsque la somme des chiffres se
compose de plusieurs chiffres, répétez la sommation jusqu'à obtenir un chiffre. Exemples
root_digit(123) ➞ 6 1 + 2 + 3 = 6 root_digit(999888777) ➞ 9
root_digit(12387636365555555 …

Récursivité : Décalage à gauche par puissances de deux

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 …

L'entrée est-elle factorielle d'un entier ?

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

Récursivité : réduire de moitié et encore réduire de moitié


Étant donné deux entiers a et b, renvoie le nombre de fois que a peut être divisé par deux
tout en restant supérieur à b. Exemples halve_count(4666, 544) ➞ 3 (4666 -> 2333 ->
1166.5 -> 583.25) halve_count(624, 8) ➞ 6 (624 -> 312 -> 156 -> 78 -> 39 -> 19.5 ->
9.75) halve_count(1000, 3) ➞ 8 (1000 -> 500 -> 250 -> 125 -> 62.5 -> 31.25 -> 15.625 -

Récursivité : mot palindrome


Créez une fonction récursive qui détermine si un mot est un palindrome ou non.
Exemples is_palindrome("madam") ➞ true is_palindrome("adieu") ➞ false
is_palindrome("rotor") ➞ true Remarques Toutes les entrées sont en minuscules. Vous
devez résoudre ce défi par récursivité. Vous pouvez consulter l'onglet Ressources pour
plus de détails …

Somme des éléments d'une liste


Créez une fonction qui prend une liste et renvoie la somme de tous les éléments de cette
liste. Exemples sum_list([1, 2, 3]) ➞ 6 1 + 2 + 3 = 6 sum_list([1, [2, [1]], 3]) ➞ 7 1 + 2 + 1
+ 3 = 7 Remarques Un élément de la liste peut être une autre liste. Essayez de le
résoudre avec une approche récursive sans utiliser la fonction sum() intégrée.

Nombre total de nombres dans une liste multidimensionnelle

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…

La séquence est-elle linéaire, quadratique ou cubique ?

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 …

Récursivité : sommation de liste

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 …

Algorithmes III : Recherche binaire

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 …

Somme de ligne simple

Imaginez ce triangle : 1 2 3 4 5 6 7 8 9 10 ... Créez une fonction qui prend un nombre n et


renvoie la somme de tous les nombres de la n-ième ligne. Exemples row_sum(1) ➞ 1
row_sum(2) ➞ 5 row_sum(4) ➞ 34 Remarques 1 <= N <= 1000

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 …

Calculer la profondeur du réseau


Étant donnée une liste, écrivez une fonction pour calculer sa profondeur. Supposons
qu'une liste normale ait une profondeur de 1. Exemples depth([1, 2, 3, 4]) ➞ 1 depth([1,
[2, 3, 4]]) ➞ 2 depth([1, [2, [3, 4]]]) ➞ 3 depth([1, [2, [3, [4]]]]) ➞ 4 Notes N/A

Trouvez le mot le plus long

É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 …

Entier positif en base 2, 8 et 16


Créez une fonction qui prend un nombre entier positif (base2, base8 ou base16) et
convertit l'entier dans la base donnée et renvoie une chaîne à l'aide de la récursivité.
Exemples integertostring(10 , 2) ➞ "1010" Base = 2 integertostring(1642 , 8) ➞ "3152"
Base = 8 integertostring(212 , 16) ➞ "d4" Base = 16 Remarques Entrée i …

Nombre de listes approfondies

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 aux favoris

Ajouter à la collection

Longueur d'une liste imbriquée

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 …

Récursivité : plages de listes inclusives

É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 …

Faits alternatifs, faits semi-alternatifs

La factorielle d'un nombre positif n est le produit de tous les nombres de 1 à n. 5! = 5 x 4


x 3 x 2 x 1 = 120 La semi-factorielle (également appelée factorielle double) d'un nombre
positif n est le produit de tous les nombres de 1 à n qui ont la même parité (c'est-à-dire
paire ou impaire) que n. 12!! = 12 x 10 x 8 x 6 x 4 x 2 = 46 080 7! …

Aplatir une liste

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 …

Récursivité : nombre de chiffres entiers

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 …

Liste multidimensionnelle en liste unidimensionnelle

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 …

Récursivité : nombre de Harshad


On dit qu'un nombre est Harshad s'il est exactement divisible par la somme de ses
chiffres. Créez une fonction qui détermine si un nombre est un Harshad ou non.
Exemples is_harshad(75) ➞ False 7 + 5 = 12 75 n'est pas exactement divisible par 12
is_harshad(171) ➞ True 1 + 7 + 1 = 9 9 divise exactement 171 is_harshad(481) ➞ True
is_harsh …

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 …

Récursivité : inverseur de cas et d'index


Écrivez une fonction récursive qui prend une chaîne en entrée et renvoie la chaîne dans
un ordre et une casse inversés. Exemples invert("dLROW YM sI HsEt") ➞ "TeSh iS my
world" invert("ytInIUgAsnOc") ➞ "CoNSaGuiNiTY" invert("step on NO PETS") ➞ "step on
NO PETS" invert("XeLPMoC YTiReTXeD") ➞ "dExtErIty cOmplEx" Remarques Aucune
chaîne vide …

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 …

Récursivité : Décalage vers la gauche par addition

L'opération de décalage vers la gauche est similaire à la multiplication par des


puissances de deux. Cela peut également être réalisé avec une addition répétitive, ainsi,
le processus peut être effectué de manière récursive. Exemple de calcul utilisant
l'opérateur de décalage vers la 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 Cr …

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 …

Récursivité : nombre pronique

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…

Récursivité : Numéro de Disarium

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) …

Récursivité : compter les chiffres

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 …

Les fêtards, partie I : faites-le de manière récursive

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 …

Récursivité : nombre heureux

Un nombre heureux est un nombre qui donne 1 en additionnant de manière répétée le


carré de ses chiffres. Si un tel processus aboutit à un cycle sans fin qui est 4, alors le
nombre est dit malheureux. Exemple de calcul : 139 = 1^2 + 3^2 + 9^2 = 1 + 9 + 81 = 91
91 = 9^2 + 1^2 = 81 + 1 = 82 82 = 8^2 + 2^2 = 64 + 4 = 68 68 = …

Récursivité : groupes de lettres de longueur N


Écrivez une fonction qui renvoie un tableau de chaînes de caractères remplies à partir
des tranches de caractères de longueur n du mot donné (une tranche après l'autre tandis
que la longueur n s'applique au mot). Exemples collect("intercontinentalisationalism", 6)
➞ ["ationa", "interc", "ntalis", "ontine"] collect("strengths", 3) ➞ ["eng", "str", "ths"] c …

Récursivité : Phrase palindrome

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(" …

Cinq et trois seulement

En commençant par 3 ou 5 et étant donné ces opérations : additionner 5 multiplier par 3


Vous devez dire s'il est possible d'atteindre le nombre cible n. Exemples only5and_3(14)
➞ Vrai 14 = 3*3 + 5 only5and_3(25) ➞ Vrai 25 = 5+5+5+5+5 only5and_3(7) ➞ Faux Il
n'existe aucun chemin vers le nombre cible 7 Remarques Vous pouvez résoudre ce
problème en …

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 …

Sous-liste la plus profonde


On vous donne une liste qui peut contenir des sous-listes. Votre tâche est de trouver la
profondeur de la sous-liste la plus profonde. [a] = 1 profondeur [[a]] = 2 profondeur [[[a]]]
= 3 profondeur, etc Exemples deepest([1, [2, 3], 4, [5, 6]]) ➞ 2 deepest([[[[[[[[[1]]]]]]]]]]) ➞
10 deepest([1, 4, [1, 4, [1, 4, [1, 4, [5]]]]]) ➞ 5 Notes N/A

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 …

Obtenir la forme carrée d'un nombre à l'aide de la recherche par


bissection

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 …

Le problème de l'escalier récursif

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 …

Trouver une valeur dans un arbre binaire

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, …

Récursivité : Plaque d'immatriculation

En voyageant à travers l'Europe, il faut faire attention à la façon dont la plaque


d'immatriculation du pays concerné est affichée. Lorsque vous traversez la frontière, vous
devez vous garer sur le bas-côté, dévisser la plaque, regrouper les caractères selon la
réglementation locale, la remettre en place et poursuivre le voyage. Créez une solution
qui peut vous aider à …

Récursivité : plages de listes inclusives réversibles

É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 …

Expressions lambda jusqu'au bout


Créez une fonction qui prend un paramètre n et renvoie une fonction telle que, lorsqu'elle
est appelée n fois, elle renvoie la chaîne "edabit". Exemples lambda_depth(0) ➞ "edabit"
lambda_depth(1)() ➞ "edabit" lambda_depth(2)()() ➞ "edabit" type(lambda_depth(2)()) ➞
Remarques num sera toujours un entier non négatif. Si num == 0, renvoie …

Récursivité : isolée ou groupée ?


Écrivez une fonction qui extrait la valeur maximale d'un nombre dans une liste. S'il y a
deux ou plusieurs valeurs maximales, renvoyez-la sous forme de liste, sinon, renvoyez le
nombre. Ce processus pourrait être relativement simple avec certaines des fonctions de

14/21
liste intégrées, mais l'approche requise est récursive. Exemples iso_group([31, 7, 2, 13,
7, 9, 10, 13]) ➞ …

Imbrication en profondeur de liste plate

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"]]]

Récursivité : chaîne de Fibonacci


Une chaîne de Fibonacci est une séquence de la suite de Fibonacci. Elle fonctionne avec
deux caractères quelconques de l'alphabet anglais (par opposition aux nombres 0 et 1 de
la suite de Fibonacci) comme éléments initiaux et les concatène ensemble au fur et à
mesure de sa progression, de manière similaire à celle de la suite de Fibonacci.
Exemples fib_str(3, ["j", "h"]) ➞ "j …

Tour de Hanoi : Trouver tous les mouvements

Vous disposez de trois tiges numérotées de 1 à 3. Quelques disques de différentes tailles


sont enfilés sur la première tige. Les disques sont classés par taille, du plus petit en haut
au plus grand en bas. Créez une fonction qui montre comment transférer la pile entière
de n disques de la première à la troisième tige, en respectant les règles suivantes :
Chaque mo …

Récursivité : trouver le mot le plus long

É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 …

Récursivité : limites factorielles exactes

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

Un mélange de cartes, également connu sous le nom de mélange de cartes ou de


mélange parfait, est une méthode contrôlée de mélange de cartes. Il est réalisé en
divisant le jeu en deux moitiés égales et en les entrelaçant parfaitement, à condition que

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.

Récursivité : escalier de soulignement-hachage

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##" …

Récursivité : modulo par soustraction

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

Récursivité : multiplication par addition

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 …

Récursivité : Mot de Fibonacci


Un mot de Fibonacci est une séquence spécifique de chiffres binaires (ou de symboles
de n'importe quel alphabet à deux lettres). Le mot de Fibonacci est formé par
concaténation répétée de la même manière que les nombres de Fibonacci sont formés
par addition répétée. Créez une fonction qui prend un nombre n comme argument et
renvoie les n premiers éléments…

Récursivité : Index de liste inversé

É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 …

Récursivité : premier indice de récurrence


Créez une fonction récursive qui identifie le tout premier élément qui est apparu de
manière récurrente dans l'argument de chaîne passé. Elle renvoie l'élément identifié avec
l'index où il est apparu pour la première fois et l'index suivant où il a refait surface -

16/21
entièrement sous forme d'objet ; ou un objet vide si l'argument passé est None, une
chaîne vide, …

Fréquence par niveau d'imbrication


Créez une fonction qui prend une liste imbriquée et un élément et renvoie la fréquence de
cet élément par niveau imbriqué. Exemples freq_count([1, 4, 4, [1, 1, [1, 2, 1, 1]]], 1) ➞
[[0, 1], [1, 2], [2, 3]] La liste contient un 1 au niveau 0, 2 1 au niveau 1 et 3 1 au niveau 2.
freq_count([1, 5, 5, [5, [1, 2, 1, 1], 5, 5], 5, [ …

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 …

Lancer <N> nombre de fléchettes Trouver toutes les combinaisons


possibles pour atteindre un score cible

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

Récursivité : séquence de Farey

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) ➞ [" …

Récursivité : aplatir les courbes

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 …

Récursivité : compression de chaîne à partir d'un tableau de caractères

La fonction reçoit un tableau de caractères. Compressez de manière récursive le tableau


en une chaîne en suivant les règles suivantes. Pour chaque groupe de caractères
répétés consécutivement : Si le nombre de caractères répétés est égal à un, ajoutez à la

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 …

Récursivité : parité du plus petit entier

É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

On vous donnera une matrice représentant un champ g et deux nombres de


coordonnées x, y. Il y a trois types de caractères possibles dans la matrice : x
représentant un rocher. o représentant un espace de terre. + représentant un espace
gazonné. Vous devez simuler la croissance de l'herbe à partir de la position (x, y).
L'herbe peut pousser dans les quatre directions…

Le problème de Josèphe

Ce problème classique remonte à l'époque romaine. Il y a 41 soldats disposés en cercle.


Un soldat sur trois doit être tué par ses ravisseurs, en continuant autour du cercle jusqu'à
ce qu'il ne reste plus qu'un seul soldat. Il doit être libéré. ​En supposant que vous
souhaitiez rester en vie, à quelle position dans le cercle vous placeriez-vous ?
Généralisez …

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 …

Récursivité : multiplier par 11

É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 ...

Tracez le chemin de la Parole

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"], …

Récursivité : nombres consécutifs croissants

É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

Les points marqués au football américain comptent pour 2, 3, 6, 7 ou 8 points. Écrivez


une fonction qui a comme argument un score de football et renvoie le nombre de façons
possibles d'atteindre ce score. L'ordre n'est pas important. Exemples football(4) ➞ 1 2+2
football(6) ➞ 3 2+2+2 ou 3+3 ou 6 football(7) ➞ 2 2+2+3 ou 7 foot …

Récursivité : division entière

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 : [ …

Récursivité : série de nombres consécutifs

É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

La tour de Hanoi déménage

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 …

Somme des chiffres

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 …

Récursivité : Parité d'index du plus grand pair

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…

Diviser la chaîne en sous-chaînes avec des caractères qui ne se


chevauchent pas

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] …

Envie d'un dictionnaire ? Essayez-le !

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

Vous aimerez peut-être aussi