Parcours
/
Python
Python
/
Exercices
/
Produits palindromes
Produits palindromes

Produits palindromes

Moyen

Instructions

Détecte les produits palindromes dans un intervalle donné.

Un nombre palindrome est un nombre qui reste le même lorsqu'on inverse ses chiffres. Par exemple, 121 est un nombre palindrome, mais 112 n'en est pas un.

Étant donné un intervalle de nombres, trouve le plus grand et le plus petit palindrome qui soient le produit de deux nombres de cet intervalle.

Ta solution doit renvoyer le plus grand et le plus petit palindrome, ainsi que les facteurs de chacun dans l'intervalle. Si le plus grand ou le plus petit palindrome admet plus d'une paire de facteurs dans l'intervalle, renvoie toutes les paires.

Exemple 1

Étant donné l'intervalle [1, 9] (bornes incluses)...

Et étant donné la liste de tous les produits possibles dans cet intervalle : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

Les produits palindromes sont tous des nombres à un seul chiffre (dans ce cas) : [1, 2, 3, 4, 5, 6, 7, 8, 9]

Le plus petit produit palindrome est 1. Ses facteurs sont (1, 1). Le plus grand produit palindrome est 9. Ses facteurs sont (1, 9) et (3, 3).

Exemple 2

Étant donné l'intervalle [10, 99] (bornes incluses)...

Le plus petit produit palindrome est 121. Ses facteurs sont (11, 11). Le plus grand produit palindrome est 9009. Ses facteurs sont (91, 99).

Remarques sur l'implémentation de smallest et largest :

Les deux fonctions doivent prendre deux arguments nommés :

  • max_factor : int
  • min_factor : int, 0 par défaut

Leur valeur de retour doit être un tuple -- (value, factors) où value est le palindrome lui-même, et factors est un iterable contenant les deux facteurs du palindrome, dans un ordre arbitraire.

Messages d'exception

Il est parfois nécessaire de lever une exception. Quand tu le fais, tu dois toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Dans les cas où tu sais que l'origine de l'erreur sera d'un certain type, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois tout de même inclure un message explicite.

Cet exercice demande en particulier d'utiliser l'instruction raise pour « lever » une ValueError quand la fonction largest() ou smallest() reçoit une paire de facteurs qui ne sont pas dans la bonne plage. Les tests ne réussiront que si tu lèves l'exception et que tu y ajoutes un message.

Pour lever une ValueError avec un message, écris ce message comme argument du type exception :

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Produits palindromes ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.