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,34 +0,0 @@
with Ada.Text_IO;
procedure Disarium_Numbers is
Disarium_Count : constant := 19;
function Is_Disarium (N : Natural) return Boolean is
Nn : Natural := N;
Pos : Natural := 0;
Sum : Natural := 0;
begin
while Nn /= 0 loop
Nn := Nn / 10;
Pos := Pos + 1;
end loop;
Nn := N;
while Nn /= 0 loop
Sum := Sum + (Nn mod 10) ** Pos;
Nn := Nn / 10;
Pos := Pos - 1;
end loop;
return N = Sum;
end Is_Disarium;
Count : Natural := 0;
begin
for N in 0 .. Natural'Last loop
if Is_Disarium (N) then
Count := Count + 1;
Ada.Text_IO.Put (N'Image);
end if;
exit when Count = Disarium_Count;
end loop;
end Disarium_Numbers;

View file

@ -1,36 +0,0 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. DISARIUM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VARIABLES.
03 CANDIDATE PIC 9(9).
03 DIGITS PIC 9 OCCURS 9 TIMES, REDEFINES CANDIDATE.
03 IDX PIC 99.
03 EXPONENT PIC 99.
03 DGT-POWER PIC 9(9).
03 DGT-POWER-SUM PIC 9(9).
03 CAND-OUT PIC Z(8)9.
03 AMOUNT PIC 99 VALUE 18.
PROCEDURE DIVISION.
BEGIN.
PERFORM DISARIUM-TEST VARYING CANDIDATE FROM ZERO BY 1
UNTIL AMOUNT IS ZERO.
STOP RUN.
DISARIUM-TEST.
MOVE ZERO TO DGT-POWER-SUM.
MOVE 1 TO EXPONENT, IDX.
INSPECT CANDIDATE TALLYING IDX FOR LEADING ZEROES.
PERFORM ADD-DIGIT-POWER UNTIL IDX IS GREATER THAN 9.
IF DGT-POWER-SUM IS EQUAL TO CANDIDATE,
MOVE CANDIDATE TO CAND-OUT,
DISPLAY CAND-OUT,
SUBTRACT 1 FROM AMOUNT.
ADD-DIGIT-POWER.
COMPUTE DGT-POWER = DIGITS(IDX) ** EXPONENT.
ADD DGT-POWER TO DGT-POWER-SUM.
ADD 1 TO EXPONENT.
ADD 1 TO IDX.

View file

@ -1,18 +1,21 @@
func disarium x .
h = x
while h > 0
d[] &= h mod 10
h = h div 10
fastfunc disarium n .
n0 = n
ndig = floor log n 10 + 1
for i = ndig downto 1
h += pow (n mod 10) i
n = n div 10
.
for i = 1 to len d[]
h += pow d[i] (len d[] - i + 1)
.
return if h = x
if h = n0 : return 1
.
while count < 19
if disarium n = 1
count += 1
print n
fastfunc nextdisarium n .
repeat
n += 1
until disarium n = 1
.
n += 1
return n
.
for i to 18
n = nextdisarium n
write n & " "
.
print ""