35 lines
835 B
Forth
35 lines
835 B
Forth
: array ( n -- ) ( i -- addr)
|
|
create cells allot
|
|
does> swap cells + ;
|
|
|
|
100 array sequence
|
|
|
|
: sequence. ( n -- ) cr 0 ?do i sequence @ . loop ;
|
|
|
|
: ?unused ( n -- t | n )
|
|
100 0 ?do
|
|
dup i sequence @ = if unloop exit then
|
|
loop drop true ;
|
|
|
|
: sequence-next ( n -- a[n] )
|
|
dup 0= if 0 0 sequence ! exit then ( case a[0]=0 )
|
|
dup dup 1- sequence @ swap - ( a[n]=a[n-1]-n )
|
|
dup dup 0> swap ?unused true = and if
|
|
nip exit then drop
|
|
dup 1- sequence @ swap + ; ( a[n]=a[n-1]+n )
|
|
|
|
: sequence-gen ( n -- )
|
|
0 ?do i sequence-next i sequence ! loop ;
|
|
|
|
: sequence-repeated
|
|
100 0 ?do
|
|
i 0 ?do
|
|
i sequence @ j sequence @ = if
|
|
cr ." first repeated : a[" i . ." ]=a[" j . ." ]=" i sequence @ . unloop unloop exit then
|
|
loop
|
|
loop ;
|
|
|
|
100 sequence-gen
|
|
15 sequence.
|
|
sequence-repeated
|