Recaman's sequence: Difference between revisions

Content added Content deleted
(Add Comal)
(Added Forth entry)
Line 951: Line 951:
<pre>First 15 items: 0 1 3 6 2 7 13 20 12 21 11 22 10 23 9
<pre>First 15 items: 0 1 3 6 2 7 13 20 12 21 11 22 10 23 9
First repeated item: A(24) = 42</pre>
First repeated item: A(24) = 42</pre>

=={{header|Forth}}==

{{works with|gforth|0.7.3}}

<lang 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</lang>

{{out}}
<pre>0 1 3 6 2 7 13 20 12 21 11 22 10 23 9
first repeated : a[20 ]=a[24 ]=42 ok</pre>



=={{header|FreeBASIC}}==
=={{header|FreeBASIC}}==