Recaman's sequence: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (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}}== |