Data update

This commit is contained in:
Ingy döt Net 2025-02-27 18:35:13 -05:00
parent 8e4e15fa56
commit 72eb4943cb
1853 changed files with 35514 additions and 9441 deletions

View file

@ -0,0 +1,55 @@
const
iterations = 1000;
limit = 10_000;
var
cache := new Dictionary<biginteger, (boolean, biginteger)>;
function rev(n: biginteger) := n.ToString[::-1].ToBigInteger;
function lychrel(n: biginteger): (boolean, biginteger);
begin
if n in cache then result := cache[n]
else begin
var r := rev(n);
var res := (True, n);
var seen := new List<biginteger>;
loop iterations do
begin
n += r;
r := rev(n);
if n = r then
begin
res := (False, 0bi);
break
end;
if n in cache then
begin
res := cache[n];
break
end;
seen.Add(n)
end;
foreach var x in seen do cache[x] := res;
result := res;
end;
end;
begin
var seeds := new List<integer>;
var related := new List<integer>;
var palin := new List<integer>;
foreach var i in (1..limit) do
begin
var (tf, s) := lychrel(i);
if not tf then continue;
if i = s then seeds.Add(i) else related.Add(i);
if i = rev(i) then palin.Add(i);
end;
println('There are', seeds.count, 'Lychrel seeds, namely:', seeds);
println('Lychrel related numbers:', related.count);
println('There are', palin.count, 'Lychrel palindromes, namely:', palin);
end.

View file

@ -1,5 +1,5 @@
import "./big" for BigInt
import "./set" for Set
import "./hash" for HashSet
var iterations = 500
var limit = 10000
@ -8,7 +8,7 @@ var bigLimit = BigInt.new(limit)
// In the sieve, 0 = not Lychrel, 1 = Seed Lychrel, 2 = Related Lychrel
var lychrelSieve = List.filled(limit + 1, 0)
var seedLychrels = []
var relatedLychrels = Set.new()
var relatedLychrels = HashSet.new()
var isPalindrome = Fn.new { |bi|
var s = bi.toString
@ -32,12 +32,12 @@ var lychrelTest = Fn.new { |i, seq|
}
var sizeBefore = relatedLychrels.count
// if all of these can be added 'i' must be a seed Lychrel
relatedLychrels.addAll(seq.map { |i| i.toString }) // can't add BigInts directly to a Set
relatedLychrels.addAll(seq)
if (relatedLychrels.count - sizeBefore == seq.count) {
seedLychrels.add(i)
lychrelSieve[i] = 1
} else {
relatedLychrels.add(i.toString)
relatedLychrels.add(i)
lychrelSieve[i] = 2
}
}