1votos

Todo entero positivo es suma de tres capicúas en Haskell

por josejuan hace 3 años

El método indicado tiene un montón de bifurcaciones que deben codificarse, el propio paper no da una forma más directa, por lo que aunque el resultado es genial, codificarlo es un ladrillo. Aquí una forma con coste lineal (exponencial en el número de dígitos).

Descomponer cualquier número entero positivo en la suma de otros tres números capicúa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
isPal x = x ≡ (read ∘ reverse ∘ show) x 
 
sum3pal n = [(a, b, n - a - b) | a ← filter isPal [n,n-1…n ÷ 3] 
                               , b ← filter isPal [n-a-1,n-a-2…2] 
                               , isPal (n - a - b) ] 
 
primerSum2Pal = head ∘ sum3pal 
 
{- 
 
> primerSum2Pal 98172371234 
(98172327189,44044,1) 
 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.