Data update

This commit is contained in:
Ingy döt Net 2026-02-01 16:33:20 -08:00
parent 5150844a7d
commit 4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions

View file

@ -1,12 +1,18 @@
import extensions;
const dig = new string[]{"00","01","10"};
const dig1 = new string[]{"","1","10"};
const string[] dig = new []{"00","01","10"};
const string[] dig1 = new []{"","1","10"};
sealed struct ZeckendorfNumber
{
int dVal;
int dLen;
int dVal : rprop();
int dLen : rprop();
constructor()
{
dVal := 0;
dLen := 0
}
clone()
= ZeckendorfNumber.newInternal(dVal,dLen);
@ -21,19 +27,13 @@ sealed struct ZeckendorfNumber
while (i >= 0)
{
dVal += ((intConvertor.convert(s[i]) - 48) * q);
dVal += ((s[i].toInt() - 48) * q);
q *= 2;
i -= 1
}
}
internal readContent(ref int val, ref int len)
{
val := dVal;
len := dLen;
}
private a(int n)
{
int i := n;
@ -42,26 +42,26 @@ sealed struct ZeckendorfNumber
{
if (dLen < i)
{
dLen := i
dLen := i;
};
int v := (dVal $shr (i * 2)) & 3;
int v := (dVal shr:(i * 2)) & 3;
v =>
0 { ^ self }
1 { ^ self }
2 {
ifnot ((dVal $shr ((i + 1) * 2)).allMask(1))
0 : { ^ self }
1 : { ^ self }
2 : {
if:not ((dVal shr:((i + 1) * 2)).allMask(1))
{
^ self
};
dVal += (1 $shl (i*2 + 1));
dVal += (1 shl:(i*2 + 1));
^ self
}
3 {
int tmp := 3 $shl (i * 2);
tmp := tmp.bxor(-1);
3 : {
int tmp := 3 shl: (i * 2);
tmp := tmp ^ -1;
dVal := dVal & tmp;
self.b((i+1)*2)
@ -81,15 +81,18 @@ sealed struct ZeckendorfNumber
{
if (pos == 0) { ^ self.inc() };
ifnot((dVal $shr pos).allMask(1))
if:not((dVal shr:pos).allMask(1))
{
dVal += (1 $shl pos);
dVal += (1 shl:pos);
self.a(pos / 2);
if (pos > 1) { self.a((pos / 2) - 1) }
}
else
{
dVal := dVal & (1 $shl pos).BInverted;
int temp := 1 shl:pos;
temp := temp ^ -1;
dVal := dVal & temp;
self.b(pos + 1);
int arg := pos - ((pos > 1) ? 2 : 1);
self.b(/*pos - ((pos > 1) ? 2 : 1)*/arg)
@ -98,9 +101,9 @@ sealed struct ZeckendorfNumber
private c(int pos)
{
if ((dVal $shr pos).allMask(1))
if ((dVal shr:pos).allMask(1))
{
int tmp := 1 $shl pos;
int tmp := 1 shl:pos;
tmp := tmp.bxor(-1);
dVal := dVal & tmp;
@ -122,18 +125,15 @@ sealed struct ZeckendorfNumber
internal constructor sum(ZeckendorfNumber n, ZeckendorfNumber m)
{
int mVal := 0;
int mLen := 0;
int mVal := m.dVal;
int mLen := m.dLen;
n.readContent(ref int v, ref int l);
m.readContent(ref mVal, ref mLen);
dVal := v;
dLen := l;
dVal := n.dVal;
dLen := n.dLen;
for(int GN := 0; GN < (mLen + 1) * 2; GN += 1)
{
if ((mVal $shr GN).allMask(1))
if ((mVal shr:GN).allMask(1))
{
self.b(GN)
}
@ -142,24 +142,21 @@ sealed struct ZeckendorfNumber
internal constructor difference(ZeckendorfNumber n, ZeckendorfNumber m)
{
int mVal := 0;
int mLen := 0;
int mVal := m.dVal;
int mLen := m.dLen;
n.readContent(ref int v, ref int l);
m.readContent(ref mVal, ref mLen);
dVal := v;
dLen := l;
dVal := n.dVal;
dLen := n.dLen;
for(int GN := 0; GN < (mLen + 1) * 2; GN += 1)
{
if ((mVal $shr GN).allMask(1))
if ((mVal shr:GN).allMask(1))
{
self.c(GN)
}
};
while (((dVal $shr (dLen*2)) & 3) == 0 || dLen == 0)
while (((dVal shr:(dLen*2)) & 3) == 0 || dLen == 0)
{
dLen -= 1
}
@ -167,10 +164,8 @@ sealed struct ZeckendorfNumber
internal constructor product(ZeckendorfNumber n, ZeckendorfNumber m)
{
n.readContent(ref int v, ref int l);
dVal := v;
dLen := l;
dVal := n.dVal;
dLen := n.dLen;
ZeckendorfNumber Na := m;
ZeckendorfNumber Nb := m;
@ -188,10 +183,8 @@ sealed struct ZeckendorfNumber
Na := Nt
};
Nr.readContent(ref v, ref l);
dVal := v;
dLen := l;
dVal := Nr.dVal;
dLen := Nr.dLen;
}
internal constructor newInternal(int v, int l)
@ -206,12 +199,9 @@ sealed struct ZeckendorfNumber
{ ^ "0" };
string s := dig1[(dVal $shr (dLen * 2)) & 3];
int i := dLen - 1;
while (i >= 0)
for (int i := dLen - 1; i >= 0; i--)
{
s := s + dig[(dVal $shr (i * 2)) & 3];
i-=1
};
^ s
@ -227,35 +217,35 @@ sealed struct ZeckendorfNumber
= ZeckendorfNumber.product(self, n);
}
public program()
public Program()
{
console.printLine("Addition:");
Console.printLine("Addition:");
var n := 10n;
n += 10n;
console.printLine(n);
Console.printLine(n);
n += 10n;
console.printLine(n);
Console.printLine(n);
n += 1001n;
console.printLine(n);
Console.printLine(n);
n += 1000n;
console.printLine(n);
Console.printLine(n);
n += 10101n;
console.printLine(n);
Console.printLine(n);
console.printLine("Subtraction:");
Console.printLine("Subtraction:");
n := 1000n;
n -= 101n;
console.printLine(n);
Console.printLine(n);
n := 10101010n;
n -= 1010101n;
console.printLine(n);
Console.printLine(n);
console.printLine("Multiplication:");
Console.printLine("Multiplication:");
n := 1001n;
n *= 101n;
console.printLine(n);
Console.printLine(n);
n := 101010n;
n += 101n;
console.printLine(n)
Console.printLine(n)
}