Hofstadter Figure-Figure sequences: Difference between revisions

add FreeBASIC
(add FreeBASIC)
Line 1,089:
( scratchpad ) 40 iota [ 1 + ffr ] map 960 iota [ 1 + ffs ] map append 1000 iota 1 v+n set= .
t</lang>
 
=={{header|FreeBASIC}}==
{{trans|BBC-BASIC}}
<lang freebasic>function ffr( n as integer ) as integer
if n = 1 then return 1
dim as integer i, j, r=1, s=1, v(1 to 2*n+1)
v(1) = 1
for i = 2 to n
for j = s to 2*n
if v(j) = 0 then exit for
next j
v(j) = 1
s = j
r += s
if r <= 2*n then v(r) = 1
next i
return r
end function
 
function ffs( n as integer ) as integer
if n = 1 then return 2
dim as integer i, j, r=1, s=2, v(1 to 2*n+1)
for i = 1 to n
for j = s to 2*n
if v(j) = 0 then exit for
next j
v(j) = 1
s = j
r += s
if r <= 2*n then v(r) = 1
next i
return s
end function
 
dim as integer i
print " R"," S"
print
for i = 1 to 10
print ffr(i), ffs(i)
next i
 
dim as boolean found(1 to 1000), failed
for i = 1 to 40
found(ffr(i)) = true
next i
for i = 1 to 960
found(ffs(i)) = true
next i
for i = 1 to 1000
if found(i) = false then failed = true
next i
 
if failed then print "Oh no!" else print "All integers from 1 to 1000 accounted for"</lang>
{{out}}<pre>
R S
 
1 2
3 4
7 5
12 6
18 8
26 9
35 10
45 11
56 13
69 14
All integers from 1 to 1000 accounted for
</pre>
 
=={{header|Go}}==
781

edits