Fusc sequence: Difference between revisions
Content added Content deleted
MaiconSoft (talk | contribs) m (fixed wrong url) |
m (→{{header|Phix}}: added syntax colouring the hard way) |
||
Line 2,067: | Line 2,067: | ||
Note that phix is 1-indexed. While there are no commas in the first 61 entries, it felt more |
Note that phix is 1-indexed. While there are no commas in the first 61 entries, it felt more |
||
in line with the task requirements to forego the standard comma-separated %v output. |
in line with the task requirements to forego the standard comma-separated %v output. |
||
<lang Phix> |
<!--<lang Phix>(phixonline)[nb very slow]--> |
||
<span style="color: #008080;">constant</span> <span style="color: #000000;">limit</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">20_000_000</span> |
|||
sequence fuscs = repeat(0,limit); -- NB 1-based indexing; fusc(0)===fuscs[1] |
|||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">fuscs</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">limit</span><span style="color: #0000FF;">);</span> <span style="color: #000080;font-style:italic;">-- NB 1-based indexing; fusc(0)===fuscs[1]</span> |
|||
fuscs[2] = 1 -- ie fusc(1):=1 |
|||
<span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- ie fusc(1):=1</span> |
|||
for n=3 to limit do |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span> <span style="color: #008080;">to</span> <span style="color: #000000;">limit</span> <span style="color: #008080;">do</span> |
|||
fuscs[n] = iff(remainder(n-1,2)?fuscs[n/2]+fuscs[n/2+1]:fuscs[(n+1)/2]) |
|||
<span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">remainder</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)?</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]+</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]:</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">])</span> |
|||
end for |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
--printf(1,"First 61 terms of the Fusc sequence:\n%v\n",{fuscs[1..61]}) |
<span style="color: #000080;font-style:italic;">--printf(1,"First 61 terms of the Fusc sequence:\n%v\n",{fuscs[1..61]})</span> |
||
string s = "" |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""</span> |
|||
for n=1 to 61 do s&=sprintf("%,d ",fuscs[n]) end for |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">61</span> <span style="color: #008080;">do</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">&=</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"%,d "</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
printf(1,"First 61 terms of the Fusc sequence:\n%s\n\n",{s}) |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"First 61 terms of the Fusc sequence:\n%s\n\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">s</span><span style="color: #0000FF;">})</span> |
|||
printf(1,"Elements with more digits than any previous items:\n") |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Elements with more digits than any previous items:\n"</span><span style="color: #0000FF;">)</span> |
|||
printf(1," Index : Value\n") |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" Index : Value\n"</span><span style="color: #0000FF;">)</span> |
|||
integer d = 0 |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">d</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> |
|||
for n=1 to length(fuscs) do |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> |
|||
if fuscs[n]>=d then |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]>=</span><span style="color: #000000;">d</span> <span style="color: #008080;">then</span> |
|||
printf(1,"%,15d : %,d\n",{n-1,fuscs[n]}) |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%,15d : %,d\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">fuscs</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]})</span> |
|||
d = iff(d=0?10:d*10) |
|||
<span style="color: #000000;">d</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #000000;">d</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">?</span><span style="color: #000000;">10</span><span style="color: #0000FF;">:</span><span style="color: #000000;">d</span><span style="color: #0000FF;">*</span><span style="color: #000000;">10</span><span style="color: #0000FF;">)</span> |
|||
end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
⚫ | |||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |