Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
33
Task/Van-Eck-sequence/ALGOL-W/van-eck-sequence.alg
Normal file
33
Task/Van-Eck-sequence/ALGOL-W/van-eck-sequence.alg
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
begin % 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 %
|
||||
% sets s to the first n elements of the Van Eck sequence %
|
||||
procedure VanEck ( integer array s ( * ) ; integer value n ) ;
|
||||
begin
|
||||
integer array pos ( 0 :: n );
|
||||
for i := 1 until n do s( i ) := 0;
|
||||
for i := 0 until n do pos( i ) := 0;
|
||||
for i := 2 until n do begin
|
||||
integer j, prev;
|
||||
j := i - 1;
|
||||
prev := s( j );
|
||||
if pos( prev ) not = 0 then begin
|
||||
% not a new element %
|
||||
s( i ) := j - pos( prev )
|
||||
end if_pos_prev_ne_0 ;
|
||||
pos( prev ) := j
|
||||
end for_j;
|
||||
end VanEck ;
|
||||
% construct the first 1000 terms of the sequence %
|
||||
integer MAX_VAN_ECK;
|
||||
MAX_VAN_ECK := 1000;
|
||||
begin
|
||||
integer array seq ( 1 :: MAX_VAN_ECK );
|
||||
VanEck( seq, MAX_VAN_ECK );
|
||||
% show the first and last 10 elements %
|
||||
for i := 1 until 10 do writeon( i_w := 1, s_w := 0, " ", seq( i ) );
|
||||
write();
|
||||
for i := MAX_VAN_ECK - 9 until MAX_VAN_ECK do writeon( i_w := 1, s_w := 0, " ", seq( i ) );
|
||||
write()
|
||||
end
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue