RosettaCodeData/Task/Lychrel-numbers/PicoLisp/lychrel-numbers.l
2023-07-01 13:44:08 -04:00

55 lines
1.6 KiB
Text

(de pali? (N)
(let N (chop N)
(= N (reverse N)) ) )
(de lychrel (A)
(let
(R NIL
Lst
(make
(for X A
(let (N X C 500)
(while
(and
(inc 'N (format (flip (chop N))))
(gt0 (dec 'C))
(not (pali? N)) ) )
(and (=0 C) (link X) ) ) ) )
Lst22
(by
'((N)
(let (X N C 3)
(prog1
(bool
(or
(member (+ N (format (flip (chop N)))) R)
(find
'((N) (member N R))
(make
(do C
(link (inc 'X (format (flip (chop X))))) ) ) ) ) )
(do C
(push1
'R
(inc 'N (format (flip (chop N)))) ) ) ) ) )
group
Lst )
P (filter pali? Lst) )
(prinl
"Using n = 1..10000 and limiting each search to 500 reverse-digits-and-adds" )
(prinl
" Number of Lychrel numbers: "
(length (car Lst22)) )
(prin " Lychrel numbers: ")
(println (car Lst22))
(prinl
" Number of Lychrel related: "
(length (cadr Lst22)) )
(prinl
" Number of Lychrel palindroms: "
(length P) )
(prin " Lychrel palindromes: ")
(println P) ) )
(lychrel 10000)
(bye)