Detecte produtos palíndromos em um determinado intervalo.
Um número palíndromo é um número que permanece o mesmo quando seus dígitos são invertidos.
Por exemplo, 121 é um número palíndromo, mas 112 não é.
Dado um intervalo de números, encontre o maior e o menor palíndromo que são produtos de dois números dentro desse intervalo.
Sua solução deve retornar o maior e o menor palíndromo, junto com os fatores de cada um dentro do intervalo. Se o maior ou o menor palíndromo tiver mais de um par de fatores dentro do intervalo, retorne todos os pares.
Dado o intervalo [1, 9] (ambos inclusive)...
E dada a lista de todos os produtos possíveis dentro desse intervalo:
[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]
Os produtos palíndromos são todos números de um único dígito (neste caso):
[1, 2, 3, 4, 5, 6, 7, 8, 9]
O menor produto palíndromo é 1.
Seus fatores são (1, 1).
O maior produto palíndromo é 9.
Seus fatores são (1, 9) e (3, 3).
Dado o intervalo [10, 99] (ambos inclusive)...
O menor produto palíndromo é 121.
Seus fatores são (11, 11).
O maior produto palíndromo é 9009.
Seus fatores são (91, 99).
smallest e largest:As duas funções devem receber dois argumentos nomeados:
max_factor: intmin_factor: int, padrão 0O valor de retorno delas deve ser uma tuple -- (value, factors), em que value é o
próprio palíndromo e factors é um iterable que contém os dois fatores do
palíndromo em ordem arbitrária.
Às vezes é necessário levantar uma exceção. Quando você faz isso, deve sempre incluir uma mensagem de erro significativa para indicar qual é a origem do erro. Isso deixa seu código mais legível e ajuda bastante com o debug. Em situações em que você sabe que a origem do erro é de um tipo específico, pode optar por levantar um dos tipos de erro embutidos, mas ainda deve incluir uma mensagem significativa.
Este exercício em particular exige que você use a instrução raise para “lançar” um ValueError quando a função largest() ou smallest() receber um par de fatores que não estão na faixa correta. Os testes só vão passar se você usar o raise na exception e incluir uma mensagem com ela.
Para levantar um ValueError com uma mensagem, escreva a mensagem como um argumento do tipo exception:
# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.