Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,35 +0,0 @@
|
|||
with Ada.Text_IO;
|
||||
|
||||
procedure Van_Eck_Sequence is
|
||||
|
||||
Sequence : array (Natural range 1 .. 1_000) of Natural;
|
||||
|
||||
procedure Calculate_Sequence is
|
||||
begin
|
||||
Sequence (Sequence'First) := 0;
|
||||
for Index in Sequence'First .. Sequence'Last - 1 loop
|
||||
Sequence (Index + 1) := 0;
|
||||
for I in reverse Sequence'First .. Index - 1 loop
|
||||
if Sequence (I) = Sequence (Index) then
|
||||
Sequence (Index + 1) := Index - I;
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
end loop;
|
||||
end Calculate_Sequence;
|
||||
|
||||
procedure Show (First, Last : in Positive) is
|
||||
use Ada.Text_IO;
|
||||
begin
|
||||
Put ("Element" & First'Image & " .." & Last'Image & " of Van Eck sequence: ");
|
||||
for I in First .. Last loop
|
||||
Put (Sequence (I)'Image);
|
||||
end loop;
|
||||
New_Line;
|
||||
end Show;
|
||||
|
||||
begin
|
||||
Calculate_Sequence;
|
||||
Show (First => 1, Last => 10);
|
||||
Show (First => 991, Last => 1_000);
|
||||
end Van_Eck_Sequence;
|
||||
|
|
@ -2,7 +2,7 @@ scope # find elements of the Van Eck Sequence - first term is 0, following
|
|||
# terms are 0 if the previous was the first appearance of the element
|
||||
# or how far back in the sequence the last element appeared otherwise
|
||||
|
||||
local procedure VanEck( n :: number ) :: sequence # returns the first n elements of the Van Eck sequence
|
||||
local proc VanEck( n :: number ) :: sequence # returns the first n elements of the Van Eck sequence
|
||||
local constant result := seq(); for i to n do result[ i ] := 0 od;
|
||||
local constant pos := seq(); for i to n + 1 do pos[ i ] := 0 od;
|
||||
for i from 2 to n do
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. VAN-ECK.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 CALCULATION.
|
||||
02 ECK PIC 999 OCCURS 1000 TIMES.
|
||||
02 I PIC 9999.
|
||||
02 J PIC 9999.
|
||||
01 OUTPUT-FORMAT.
|
||||
02 ITEM PIC ZZ9.
|
||||
02 IDX PIC ZZZ9.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
B. PERFORM GENERATE-ECK.
|
||||
PERFORM SHOW VARYING I FROM 1 BY 1 UNTIL I = 11.
|
||||
PERFORM SHOW VARYING I FROM 991 BY 1 UNTIL I = 1001.
|
||||
STOP RUN.
|
||||
|
||||
SHOW.
|
||||
MOVE I TO IDX.
|
||||
MOVE ECK(I) TO ITEM.
|
||||
DISPLAY 'ECK(' IDX ') = ' ITEM.
|
||||
|
||||
GENERATE-ECK SECTION.
|
||||
B. SET ECK(1) TO 0.
|
||||
SET I TO 1.
|
||||
PERFORM GENERATE-TERM
|
||||
VARYING I FROM 2 BY 1 UNTIL I = 1001.
|
||||
|
||||
GENERATE-TERM SECTION.
|
||||
B. SUBTRACT 2 FROM I GIVING J.
|
||||
LOOP.
|
||||
IF J IS LESS THAN 1 GO TO TERM-IS-NEW.
|
||||
IF ECK(J) = ECK(I - 1) GO TO TERM-IS-OLD.
|
||||
SUBTRACT 1 FROM J.
|
||||
GO TO LOOP.
|
||||
|
||||
TERM-IS-NEW.
|
||||
SET ECK(I) TO 0.
|
||||
GO TO DONE.
|
||||
|
||||
TERM-IS-OLD.
|
||||
COMPUTE ECK(I) = (I - J) - 1.
|
||||
|
||||
DONE. EXIT.
|
||||
|
|
@ -1,3 +1,7 @@
|
|||
F ← ⊂⟨0◌|+1⟩>⊙(-1⧻),,⊗⊃⊢(↘1). # Generator function (prepends).
|
||||
⇌⍥F999 [0] # Generate 1000 terms and flip.
|
||||
⊃(&p↙¯)(&p↙∘)10 # Print first and last 10 terms.
|
||||
# Generate Van Eck sequence.
|
||||
F ← (
|
||||
◡<⊙⊙◌⊃(⋅⧻|⊸˜⨂)°⊂. # Check where/if first digit already appeared.
|
||||
⊂⨬(⋅⋅0|⋅+₁) # If new, prepend zero, else last index it was in.
|
||||
)
|
||||
⇌⍥F999 [0] # Generate 1000 terms and reverse.
|
||||
⊃(&p↙¯)(&p↙∘)10 # Print first and last 10 terms.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue