Hofstadter Figure-Figure sequences: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
(RPL: add section) |
||
Line 2,801: | Line 2,801: | ||
First 10 values of S: |
First 10 values of S: |
||
2 4 5 6 8 9 10 11 13 14 |
2 4 5 6 8 9 10 11 13 14 |
||
</pre> |
|||
=={{header|RPL}}== |
|||
{{works with|Halcyon Calc|4.2.8}} |
|||
{| class="wikitable" |
|||
! RPL code |
|||
! Comment |
|||
|- |
|||
| |
|||
≪ { 1 3 } 'R' STO { 2 } 'S' STO |
|||
≫ ''''INITFF'''' STO |
|||
≪ |
|||
S DUP SIZE GET |
|||
'''DO''' 1 + '''UNTIL''' R OVER POS NOT '''END''' |
|||
S OVER + 'S' STO |
|||
R DUP SIZE GET + R SWAP + 'R' STO |
|||
≫ ''''NXTFF'''' STO |
|||
≪ |
|||
''''WHILE''' R SIZE OVER < '''REPEAT NXTFF END''' |
|||
R SWAP GET |
|||
≫ ''''FFR'''' STO |
|||
≪ |
|||
'''WHILE''' S SIZE OVER < '''REPEAT NXTFF END''' |
|||
S SWAP GET |
|||
≫ ''''FFS'''' STO |
|||
≪ '''INITFF''' |
|||
40 '''FFR''' DROP R |
|||
960 '''FFS''' DROP S + |
|||
1 SF 1 1000 '''FOR''' j |
|||
'''IF''' DUP j POS NOT '''THEN''' 1 CF '''END NEXT''' DROP |
|||
1 FS? "Passed" "Failed" IFTE |
|||
≫ ''''TASK4'''' STO |
|||
| |
|||
'''INITFF''' ''( -- ) '' |
|||
Initialize R(1..2) and S(1) |
|||
'''NXTFF''' ''( -- ) '' |
|||
n = last stored item of S() |
|||
n += 1 until n not in R() |
|||
append n to S() |
|||
append (n + last item of R()) to R() |
|||
'''FFR''' ''( n -- R(n) ) '' |
|||
if R(n) not stored, develop R() |
|||
Get R(n) |
|||
'''FFS''' ''( n -- S(n) ) '' |
|||
if S(n) not stored, develop S() |
|||
Get S(n) |
|||
'''TASK4''' ''( -- "Result" ) '' |
|||
Get R(40) and put R(1..40) in stack |
|||
Get S(960), append S(1..960) to R(1..40) |
|||
set flag ; for j=1 to 1000 |
|||
if j not in the merged list then clear flag |
|||
Flag is still set iff all 1..1000 were in list once |
|||
|} |
|||
{{in}} |
|||
<pre> |
|||
10 FFR DROP R |
|||
TASK4 |
|||
</pre> |
|||
{{out}} |
|||
<pre> |
|||
2: { 1 3 7 12 18 26 35 45 56 69 } |
|||
1: "Passed" |
|||
</pre> |
</pre> |
||