Range modifications: Difference between revisions

m
→‎{{header|Phix}}: syntax coloured, made p2js compatible
(Added solution for Action!)
m (→‎{{header|Phix}}: syntax coloured, made p2js compatible)
Line 1,266:
 
=={{header|Phix}}==
<!--<lang Phix>(phixonline)-->
<lang Phix>requires("0.8.2") -- (uses latest apply() functionality)
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
 
<span style="color: #008080;">function</span> <span style="color: #000000;">add</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">)</span>
function add(sequence ranges, atom v)
<span style="color: #000080;font-style:italic;">--
--
-- eg {} + 9 -->&gt; <nowiki>{{</nowiki>9,9<nowiki>}}</nowiki> -- [1]
-- <nowiki>{{</nowiki>3,5<nowiki>}}</nowiki> + 9 -->&gt; <nowiki>{{</nowiki>3,5},{9,9<nowiki>}}</nowiki> -- [1]
-- <nowiki>{{</nowiki>3,5<nowiki>}}</nowiki> + 4 -->&gt; as-is -- [2]
-- <nowiki>{{</nowiki>3,5<nowiki>}}</nowiki> + 2 -->&gt; <nowiki>{{</nowiki>2,5<nowiki>}}</nowiki> -- [3]
-- <nowiki>{{</nowiki>3,5},{7,9<nowiki>}}</nowiki> + 6 -->&gt; <nowiki>{{</nowiki>3,9<nowiki>}}</nowiki> -- [4]
-- <nowiki>{{</nowiki>3,5},{8,9<nowiki>}}</nowiki> + 6 -->&gt; <nowiki>{{</nowiki>3,6},{8,9<nowiki>}}</nowiki> -- [5]
-- <nowiki>{{</nowiki>3,5},{8,9<nowiki>}}</nowiki> + 7 -->&gt; <nowiki>{{</nowiki>3,5},{7,9<nowiki>}}</nowiki> -- [3]
-- <nowiki>{{</nowiki>3,5<nowiki>}}</nowiki> + 6 -->&gt; <nowiki>{{</nowiki>3,6<nowiki>}}</nowiki> -- [6]
-- <nowiki>{{</nowiki>3,5<nowiki>}}</nowiki> + 1 -->&gt; <nowiki>{{</nowiki>1,1},{3,5<nowiki>}}</nowiki> -- [7]
--</span>
--
<span style="color: #004080;">integer</span> <span style="color: #000000;">l</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">)</span>
integer l = length(ranges)
<span style="color: #000000;">ranges</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">)</span>
for i=1 to l+1 do
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
if i>l then ranges &= {{v,v}} exit -- [1]
<span style="color: #008080;">if</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">></span><span style="color: #000000;">l</span> <span style="color: #008080;">then</span> <span style="color: #000000;">ranges</span> <span style="color: #0000FF;">&=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">v</span><span style="color: #0000FF;">,</span><span style="color: #000000;">v</span><span style="color: #0000FF;">}}</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [1]</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
atom nl,{lo,hi} = ranges[i]
<span style="color: #004080;">atom</span> <span style="color: #000000;">nl</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">lo</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
if v>=lo and v<=hi then exit -- [2]
<span style="color: #008080;">if</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">lo</span> <span style="color: #008080;">and</span> <span style="color: #000000;">v</span><span style="color: #0000FF;"><=</span><span style="color: #000000;">hi</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [2]</span>
elsif v=lo-1 then ranges[i][1] = v exit -- [3]
<span style="color: #008080;">elsif</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">=</span><span style="color: #000000;">lo</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">][</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">v</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [3]</span>
elsif v=hi+1 then
<span style="color: #008080;">elsif</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">=</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
if i<l then
<span style="color: #008080;">if</span> <span style="color: #000000;">i</span><span style="color: #0000FF;"><</span><span style="color: #000000;">l</span> <span style="color: #008080;">then</span>
{nl,hi} = ranges[i+1]
<span style="color: #0000FF;">{</span><span style="color: #000000;">nl</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
if nl=v+1 then
<span style="color: #008080;">if</span> <span style="color: #000000;">nl</span><span style="color: #0000FF;">=</span><span style="color: #000000;">v</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span>
ranges[i..i+1] = {{lo,hi}} exit -- [4]
<span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">..</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">lo</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">}}</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [4]</span>
else
<span ranges[i][2] style="color: v exit -- [5]#008080;">else</span>
<span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</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;">v</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [5]</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
else
<span style="color: #008080;">else</span>
ranges[i][2] = v exit -- [6]
<span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</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;">v</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [6]</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
elsif v<lo then ranges[i..i-1] = {{v,v}} exit -- [7]
<span style="color: #008080;">elsif</span> <span style="color: #000000;">v</span><span style="color: #0000FF;"><</span><span style="color: #000000;">lo</span> <span style="color: #008080;">then</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">..</span><span style="color: #000000;">i</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">v</span><span style="color: #0000FF;">,</span><span style="color: #000000;">v</span><span style="color: #0000FF;">}}</span> <span style="color: #008080;">exit</span> <span style="color: #000080;font-style:italic;">-- [7]</span>
end if
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end for
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
return ranges
<span style="color: #008080;">return</span> <span style="color: #000000;">ranges</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
 
function del(sequence ranges, atom v)
<span style="color: #008080;">function</span> <span style="color: #000000;">del</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">)</span>
--
<span style="color: #000080;font-style:italic;">--
-- eg {{1,2}} - 1 --> {{2,2}} -- [1]
-- eg <nowiki>{{2</nowiki>1,2<nowiki>}}</nowiki> - 21 --> &gt; <nowiki>{{</nowiki>2,2<nowiki>} }</nowiki> -- [21]
-- <nowiki>{{1</nowiki>2,2<nowiki>}}</nowiki> - 2 -->&gt; {{1,1}} -- [32]
-- <nowiki>{{</nowiki>1,32<nowiki>}}</nowiki> - 2 -->&gt; <nowiki>{{</nowiki>1,1},{3,3<nowiki>}}</nowiki> -- [43]
-- <nowiki>{{2</nowiki>1,3<nowiki>}}</nowiki> - 12 --> as-is &gt; <nowiki>{{</nowiki>1,1},{3,3<nowiki>}}</nowiki> -- [54]
-- <nowiki>{{</nowiki>2,3<nowiki>}}</nowiki> - 1 --&gt; as-is -- [5]
--
--</span>
for i=1 to length(ranges) do
<span style="color: #000000;">ranges</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">deep_copy</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">)</span>
atom {lo,hi} = ranges[i]
<span style="color: #008080;">for</span> <span style="color: #000000;">i</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;">ranges</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
if v>=lo and v<=hi then
<span style="color: #004080;">atom</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">lo</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
if v=lo then
<span style="color: #008080;">if</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">>=</span><span style="color: #000000;">lo</span> <span style="color: #008080;">and</span> <span style="color: #000000;">v</span><span style="color: #0000FF;"><=</span><span style="color: #000000;">hi</span> <span style="color: #008080;">then</span>
if v<hi then ranges[i][1] = lo+1 -- [1]
<span style="color: #008080;">if</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">=</span><span style="color: #000000;">lo</span> <span style="color: #008080;">then</span>
else ranges[i..i] = {} end if -- [2]
<span style="color: #008080;">if</span> <span style="color: #000000;">v</span><span style="color: #0000FF;"><</span><span style="color: #000000;">hi</span> <span style="color: #008080;">then</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">][</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">lo</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- [1]</span>
elsif v==hi then ranges[i][2] = hi-1 -- [3]
<span style="color: #008080;">else</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">..</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #000080;font-style:italic;">-- [2]</span>
else ranges[i..i] = {{lo,v-1},{v+1,hi}} -- [4]
<span style="color: #008080;">elsif</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">==</span><span style="color: #000000;">hi</span> <span style="color: #008080;">then</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</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;">hi</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #000080;font-style:italic;">-- [3]</span>
end if exit
<span style="color: #008080;">else</span> <span style="color: #000000;">ranges</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">..</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #000000;">lo</span><span style="color: #0000FF;">,</span><span style="color: #000000;">v</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">v</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">hi</span><span style="color: #0000FF;">}}</span> <span style="color: #000080;font-style:italic;">-- [4]</span>
elsif v<hi then exit end if -- [5]
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #008080;">exit</span>
end for
<span style="color: #008080;">elsif</span> <span style="color: #000000;">v</span><span style="color: #0000FF;"><</span><span style="color: #000000;">hi</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #000080;font-style:italic;">-- [5]</span>
return ranges
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
end function
<span style="color: #008080;">return</span> <span style="color: #000000;">ranges</span>
 
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
constant tests = split("""
Start with ""
<span style="color: #008080;">constant</span> <span style="color: #000000;">tests</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"""
add 77
Start with ""
add 79
add 7877
remove 77add 79
remove add 78
remove 7977
remove 78
Start with "1-3,5-5"
add 1remove 79
Start with "1-3,5-5"
remove 4
add 71
add 8remove 4
add 67
remove 7add 8
add 6
Start with "1-5,10-25,27-30"
add 26remove 7
Start with "1-5,10-25,27-30"
add 9
add 726
remove 26add 9
remove 9add 7
remove 726
remove 9
Start with "13-14,22-22,100000999999-100001000000,100001000003-999999999999"
remove 227
Start with "13-14,22-22,100000999999-100001000000,100001000003-999999999999"
remove 100000999999
remove 10000100000022
remove add 100001000001100000999999
remove add 100001000002100001000000
add 100001000001
remove 100001000002
add 100001000002
remove 100001000001
remove 100001000002
""","\n",no_empty:=true)
remove 100001000001
 
"""</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">no_empty</span><span style="color: #0000FF;">:=</span><span style="color: #004600;">true</span><span style="color: #0000FF;">)</span>
string range = ""
sequence ranges -- range internal form
<span style="color: #004080;">string</span> <span style="color: #000000;">range</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""</span>
for i=1 to length(tests) do
<span style="color: #004080;">sequence</span> <span style="color: #000000;">ranges</span> <span style="color: #000080;font-style:italic;">-- range internal form</span>
string ti = tests[i]
<span style="color: #008080;">for</span> <span style="color: #000000;">i</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;">tests</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
if match("Start with",ti) then
<span style="color: #004080;">string</span> <span style="color: #000000;">ti</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">tests</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
{{range}} = scanf(trim(ti),"Start with \"%s\"")
<span style="color: #008080;">if</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"Start with"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">ti</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
ranges = split(range,",")
<span style="color: #0000FF;">{</span><span style="color: #000000;">range</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">scanf</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">trim</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ti</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"Start with \"%s\""</span><span style="color: #0000FF;">)[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
ranges = vslice(apply(true,scanf,{ranges,{"%d-%d"}}),1)
<span style="color: #000000;">ranges</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #000000;">range</span><span style="color: #0000FF;">,</span><span style="color: #008000;">","</span><span style="color: #0000FF;">)</span>
printf(1,"\n Start with: \"%s\"\n",{range})
<span style="color: #000000;">ranges</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">vslice</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">scanf</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">,{</span><span style="color: #008000;">"%d-%d"</span><span style="color: #0000FF;">}}),</span><span style="color: #000000;">1</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;">"\n Start with: \"%s\"\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">range</span><span style="color: #0000FF;">})</span>
else
<span style="color: #000080;font-style:italic;">-- ^^ ^^</span>
{{string op, atom v}} = scanf(trim(ti),"%s %d")
<span style="color: #008080;">else</span>
integer rid = routine_id(substitute(op,"remove","del"))
<span style="color: #0000FF;">{</span><span style="color: #004080;">string</span> <span style="color: #000000;">op</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">v</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">scanf</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">trim</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ti</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"%s %d"</span><span style="color: #0000FF;">)[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span>
ranges = rid(ranges,v)
<span style="color: #004080;">integer</span> <span style="color: #000000;">rid</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">routine_id</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">op</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"remove"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"del"</span><span style="color: #0000FF;">))</span>
range = join(apply(true,sprintf,{{"%d-%d"},ranges}),",")
<span style="color: #000000;">ranges</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">rid</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">,</span><span style="color: #000000;">v</span><span style="color: #0000FF;">)</span>
printf(1," %9s %-12d -> \"%s\"\n",{op,v,range})
<span style="color: #000000;">range</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">sprintf</span><span style="color: #0000FF;">,{{</span><span style="color: #008000;">"%d-%d"</span><span style="color: #0000FF;">},</span><span style="color: #000000;">ranges</span><span style="color: #0000FF;">}),</span><span style="color: #008000;">","</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;">" %9s %-12d -&gt; \"%s\"\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">op</span><span style="color: #0000FF;">,</span><span style="color: #000000;">v</span><span style="color: #0000FF;">,</span><span style="color: #000000;">range</span><span style="color: #0000FF;">})</span>
end if
<span style="color: #000080;font-style:italic;">-- ^^ ^^</span>
end for</lang>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</lang>-->
{{out}}
<small>(Note that all double-quotes in the output were deliberately added in the last two printf() statements, mainly to prove there are no unnecessary spaces, etc, and are (see ^^) obviously trivial to remove.)</small>
7,805

edits