Hofstadter Figure-Figure sequences: Difference between revisions

m (→‎{{header|Ring}}: Remove vanity tags)
Line 1,593:
1 3 7 12 18 26 35 45 56 69
Rawks!</pre>
 
=={{header|Phix}}==
Initialising such that length(S)>length(F) simplified things significantly.
<lang Phix>sequence F = {1,3,7},
S = {2,4,5,6}
integer fmax = 3 -- (ie F[3], ==7, already in S)
 
forward function ffs(integer n)
 
function ffr(integer n)
integer l = length(F)
while n>l do
F &= F[l]+ffs(l)
l += 1
end while
return F[n]
end function
 
function ffs(integer n)
while n>length(S) do
fmax += 1
if fmax>length(F) then {} = ffr(fmax) end if
S &= tagset(lim:=F[fmax]-1,start:=F[fmax-1]+1)
-- ie/eg if fmax was 3, then F[2..3] being {3,7}
-- ==> tagset(lim:=6,start:=4), ie {4,5,6}.
end while
return S[n]
end function
 
{} = ffr(10) -- (or collect one by one)
?{"The first ten values of R",F[1..10]}
{} = ffr(40) -- (not actually needed)
{} = ffs(960)
if sort(F[1..40]&S[1..960])=tagset(1000) then
puts(1,"test passed\n")
else
puts(1,"some error!\n")
end if</lang>
{{out}}
<pre>
{"The first ten values of R",{1,3,7,12,18,26,35,45,56,69}}
test passed
</pre>
 
=={{header|PicoLisp}}==
7,805

edits