31 lines
6.6 KiB
Plaintext
31 lines
6.6 KiB
Plaintext
(phixonline)-->
|
|
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
|
<span style="color: #008080;">procedure</span> <span style="color: #000000;">solve_babbage_problem</span><span style="color: #0000FF;">()</span> <span style="color: #000080;font-style:italic;">-- (so that return quits 3 loops)</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">cands</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- n-digit candidates (n initially 0)</span>
|
|
<span style="color: #000000;">nextc</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span> <span style="color: #000080;font-style:italic;">-- n+1-digit candidates, aka next ""</span>
|
|
<span style="color: #004080;">integer</span> <span style="color: #000000;">p10</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">-- power of 10 for adding prefixes</span>
|
|
<span style="color: #000000;">r10</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">10</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">-- power of 10 for getting remainder</span>
|
|
<span style="color: #000000;">cc</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> <span style="color: #000080;font-style:italic;">-- count of calculations</span>
|
|
<span style="color: #008080;">for</span> <span style="color: #000000;">digits</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">6</span> <span style="color: #008080;">do</span> <span style="color: #000080;font-style:italic;">-- aka 1..length("269696")</span>
|
|
<span style="color: #008080;">for</span> <span style="color: #000000;">prefix</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">9</span><span style="color: #0000FF;">*</span><span style="color: #000000;">p10</span> <span style="color: #008080;">by</span> <span style="color: #000000;">p10</span> <span style="color: #008080;">do</span>
|
|
<span style="color: #008080;">for</span> <span style="color: #000000;">cand</span> <span style="color: #008080;">in</span> <span style="color: #7060A8;">sq_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">prefix</span><span style="color: #0000FF;">,</span><span style="color: #000000;">cands</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
|
<span style="color: #004080;">atom</span> <span style="color: #000000;">square</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">cand</span><span style="color: #0000FF;">*</span><span style="color: #000000;">cand</span>
|
|
<span style="color: #000000;">cc</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
|
<span style="color: #008080;">if</span> <span style="color: #7060A8;">remainder</span><span style="color: #0000FF;">(</span><span style="color: #000000;">square</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r10</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">remainder</span><span style="color: #0000FF;">(</span><span style="color: #000000;">269696</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r10</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
|
|
<span style="color: #008080;">if</span> <span style="color: #000000;">digits</span><span style="color: #0000FF;">=</span><span style="color: #000000;">6</span> <span style="color: #008080;">then</span>
|
|
<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;">"Solution: %d (%d calcs)\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">cand</span><span style="color: #0000FF;">,</span><span style="color: #000000;">cc</span><span style="color: #0000FF;">})</span>
|
|
<span style="color: #008080;">return</span> <span style="color: #000080;font-style:italic;">-- leave solve_babbage_problem()</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
|
<span style="color: #000000;">nextc</span> <span style="color: #0000FF;">&=</span> <span style="color: #000000;">cand</span> <span style="color: #000080;font-style:italic;">-- add candidate for next iteration</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
|
<span style="color: #0000FF;">{</span><span style="color: #000000;">cands</span><span style="color: #0000FF;">,</span><span style="color: #000000;">nextc</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">nextc</span><span style="color: #0000FF;">,{}}</span>
|
|
<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;">"%d-digit candidates: %v\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">digits</span><span style="color: #0000FF;">,</span><span style="color: #000000;">cands</span><span style="color: #0000FF;">})</span>
|
|
<span style="color: #000000;">p10</span> <span style="color: #0000FF;">*=</span> <span style="color: #000000;">10</span>
|
|
<span style="color: #000000;">r10</span> <span style="color: #0000FF;">*=</span> <span style="color: #000000;">10</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
|
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
|
|
<span style="color: #000000;">solve_babbage_problem</span><span style="color: #0000FF;">()</span>
|
|
<!--
|