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

46 lines
1.1 KiB
Text
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var (
lychrels = [],
palindromes = [],
seeds = [],
max = 500,
)
 
for i in (1 .. 10_000) {
var (test = [], count = 0)
 
func lychrel(l) {
count++ > max && return true
test << (var m = (l + Num(Str(l).flip)))
Str(m).is_palindrome && return false
lychrel(m)
}
 
if (lychrel(i)) {
lychrels << Pair(Str(i), test)
}
}
 
seeds << lychrels[0]
 
for l in lychrels {
if (l.key.is_palindrome) {
palindromes << l.key
}
 
var h = Hash()
h.set_keys(l.value...)
 
var trial = seeds.count_by { |s|
s.value.any { |k| h.contains(k) } ? break : true
}
 
if (trial == seeds.len) {
seeds << l
}
}
 
say (" Number of Lychrel seed numbers < 10_000: ", seeds.len)
say (" Lychrel seed numbers < 10_000: ", seeds.map{.key}.join(', '))
say ("Number of Lychrel related numbers < 10_000: ", lychrels.len - seeds.len)
say (" Number of Lychrel palindromes < 10_000: ", palindromes.len)
say (" Lychrel palindromes < 10_000: ", palindromes.join(', '))