Percursos
/
Haskell
Haskell
/
Exercícios
/
Produtos palíndromos
Produtos palíndromos

Produtos palíndromos

Médio

Instruções

Deteta produtos palíndromos num determinado intervalo.

Um número palíndromo é um número que continua igual quando se invertem os seus algarismos. Por exemplo, 121 é um número palíndromo, mas 112 não é.

Dado um intervalo de números, encontra o maior e o menor palíndromos que sejam produtos de dois números dentro desse intervalo.

A tua solução deve devolver o maior e o menor palíndromos, juntamente com os fatores de cada um dentro do intervalo. Se o maior ou o menor palíndromo tiver mais do que um par de fatores dentro do intervalo, devolve todos os pares.

Exemplo 1

Dado o intervalo [1, 9] (ambos inclusive)...

E dada a lista de todos os produtos possíveis dentro deste 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 só algarismo (neste caso): [1, 2, 3, 4, 5, 6, 7, 8, 9]

O menor produto palíndromo é 1. Os seus fatores são (1, 1). O maior produto palíndromo é 9. Os seus fatores são (1, 9) e (3, 3).

Exemplo 2

Dado o intervalo [10, 99] (ambos inclusive)...

O menor produto palíndromo é 121. Os seus fatores são (11, 11). O maior produto palíndromo é 9009. Os seus fatores são (91, 99).

Dicas

Para resolveres este exercício, tens de implementar estas duas funções:

  • largestPalindrome
  • smallestPalindrome

Ambas as funções recebem limites inferior e superior dos fatores e devolvem um par (value, [(factor1, factor2)]) com o palíndromo e os seus possíveis pares de fatores.

Podes usar as assinaturas fornecidas se tiveres dúvidas sobre os tipos, mas não deixes que elas te restrinjam a criatividade.

Não há problema em devolver duplicados na lista de fatores, e a ordem dos fatores é indiferente.

Considera usar um algoritmo ligeiramente diferente para encontrar palíndromos pequenos ou grandes.

Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Produtos palíndromos?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.