Index finite lists of positive integers: Difference between revisions

m
→‎bijective: bigint->native
m (→‎base 11: bigint->mpfr)
m (→‎bijective: bigint->native)
Line 590:
===bijective===
{{trans|Python}}
<lang Phix>includefunction bigint.eunrank(atom n)
sequence res = bi_sprintsprintf(n"%0b",2n)
 
function unrank(object n)
sequence res = bi_sprint(n,2)
if res="1" then return {0} end if
res = split(res[2..$],'0')
Line 605 ⟶ 603:
x[i] = repeat('1',x[i])
end for
bigintatom {{res}} = bi_newscanf("0b1"&join(x,'0'),"%d")
return res
end function
 
for i=0 to 10 do
sequence a = unrank(i)
printf(1,"%3d : %-18s18v: %sd\n",{i, sprint(a), bi_sprint(rank(a))})
end for
 
sequence x = {1, 2, 3, 5, 8}
printf(1,"%sv => %sd => %sv\n",{sprint(x),bi_sprint(rank(x)),sprint(unrank(rank(x)))})</lang>
{{out}}
<pre>
7,804

edits