Lychrel numbers: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Perl 6}}: Style tweaks) |
|||
Line 2,427: | Line 2,427: | ||
Number of Lychrel palindromes < 10_000: 3 |
Number of Lychrel palindromes < 10_000: 3 |
||
Lychrel palindromes < 10_000: 4994, 8778, 9999</pre> |
Lychrel palindromes < 10_000: 4994, 8778, 9999</pre> |
||
=={{header|Phix}}== |
|||
<lang Phix>constant iterations = 500, |
|||
limit = 10000 |
|||
sequence seeds = {}, |
|||
cache = {} |
|||
sequence temp = repeat(0,iterations) |
|||
sequence palin = {} |
|||
integer related = 0 |
|||
for n=1 to limit do |
|||
string num = sprintf("%d",n), |
|||
rev = reverse(num) |
|||
bool palindrome = (num=rev) |
|||
for i=1 to iterations do |
|||
integer digit, carry = 0 |
|||
for x=length(num) to 1 by -1 do |
|||
digit = num[x]+rev[x]+carry-'0' |
|||
carry = digit>'9' |
|||
num[x] = digit-carry*10 |
|||
end for |
|||
if carry then num = "1" & num end if |
|||
temp[i] = num |
|||
rev = reverse(num) |
|||
if num=rev then exit end if |
|||
end for |
|||
if num!=rev then |
|||
bool no_match = true |
|||
num = sprintf("%d",n) |
|||
if palindrome then |
|||
palin = append(palin, num) |
|||
end if |
|||
for c=1 to length(cache) do |
|||
string seed = cache[c] |
|||
-- check against previous found seeds |
|||
for i=iterations to 1 by -1 do |
|||
string ti = temp[i] |
|||
if length(seed)>length(ti) then |
|||
exit |
|||
elsif seed=ti then |
|||
no_match = false |
|||
related += 1 |
|||
exit |
|||
end if |
|||
end for |
|||
if no_match=false then exit end if |
|||
end for |
|||
if no_match then |
|||
seeds = append(seeds,num) |
|||
cache = append(cache,temp[$]) |
|||
end if |
|||
end if |
|||
end for |
|||
printf(1,"%d lychrel seeds: %s\n",{length(seeds),join(seeds, ", ")}) |
|||
printf(1,"related lychrel: %d\n",related) |
|||
printf(1,"%d lychrel palindromes: %s\n", {length(palin),join(palin, ", ")})</lang> |
|||
{{out}} |
|||
Completes in under a second |
|||
<pre> |
|||
5 lychrel seeds: 196, 879, 1997, 7059, 9999 |
|||
related lychrel: 244 |
|||
3 lychrel palindromes: 4994, 8778, 9999 |
|||
</pre> |
|||
=={{Header|PicoLisp}}== |
=={{Header|PicoLisp}}== |