Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
55
Task/Lychrel-numbers/PascalABC.NET/lychrel-numbers.pas
Normal file
55
Task/Lychrel-numbers/PascalABC.NET/lychrel-numbers.pas
Normal 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.
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue