Minimal steps down to 1: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: added Haskell solution) |
(J) |
||
Line 510: | Line 510: | ||
λ> task2 [Div 2, Div 3, Sub 2] [1..2000] |
λ> task2 [Div 2, Div 3, Sub 2] [1..2000] |
||
17: (((((((((((1699-2)-2)/3-2)-2)/3-2)-2)/3-2)-2)/3-2)-2)/3-2)/3</pre> |
17: (((((((((((1699-2)-2)/3-2)-2)/3-2)-2)/3-2)-2)/3-2)-2)/3-2)/3</pre> |
||
=={{header|J}}== |
|||
Implementation: |
|||
<lang J>step=: {{ |
|||
~.((#~ 1<:]),y-/m),(#~ (=<.)),y%/n |
|||
}} |
|||
steps=: {{ |
|||
m step n^:(1 - 1 e. ])^:a: |
|||
}} |
|||
show=: {{ |
|||
k=.,:,:0 0 1 |
|||
m=.,m [ n=.,n |
|||
for_ok.}.|.m steps n y do. |
|||
last=.{:"2 k |
|||
subs=. (1,.m,.0)+"2]0 0 1*"1 last+"1 0/m |
|||
divs=. (2,.n,.0)+"2]0 0 1*"1 last*"1 0/n |
|||
next=. subs,"2 divs |
|||
k=. (,({:"1 next)e.ok)#,/k,"2 1/"2 next |
|||
end. |
|||
;@((<":y),_2 }. ,)"2((' -/'{~{.);":@{:)"1 }:"1 |."2 k |
|||
}} |
|||
taskA=: {{ |
|||
for_j. 1+i.10 do. |
|||
echo j,&":': ',(_1+#x steps y j),&":' steps.' |
|||
echo x show y j |
|||
echo '' |
|||
end. |
|||
}} |
|||
taskB=: {{ |
|||
echo 'considering positive integers up to ',":m |
|||
tallies=. _1+#@(x steps y)every 1+i.m |
|||
echo (>./tallies) ,&": ' steps: ',&": 1+I.(=>./)tallies |
|||
echo '' |
|||
}} |
|||
task=: 2e4 taskB, 2e3 taskB, taskA |
|||
</lang> |
|||
Task examples: |
|||
<lang J> 1 task 2 3 |
|||
1: 0 steps. |
|||
1 |
|||
2: 1 steps. |
|||
2-1 |
|||
2/2 |
|||
3: 1 steps. |
|||
3/3 |
|||
4: 2 steps. |
|||
4/2-1 |
|||
4/2/2 |
|||
4-1/3 |
|||
5: 3 steps. |
|||
5-1/2-1 |
|||
5-1/2/2 |
|||
5-1-1/3 |
|||
6: 2 steps. |
|||
6/3-1 |
|||
6/3/2 |
|||
6/2/3 |
|||
7: 3 steps. |
|||
7-1/3-1 |
|||
7-1/3/2 |
|||
7-1/2/3 |
|||
8: 3 steps. |
|||
8/2/2-1 |
|||
8/2/2/2 |
|||
8/2-1/3 |
|||
9: 2 steps. |
|||
9/3/3 |
|||
10: 3 steps. |
|||
10-1/3/3 |
|||
considering positive integers up to 2000 |
|||
14 steps: 863 1079 1295 1439 1511 1583 1607 1619 1691 1727 1823 1871 1895 1907 1919 1943 |
|||
considering positive integers up to 20000 |
|||
20 steps: 12959 15551 17279 18143 19439 |
|||
2 task 2 3 |
|||
1: 0 steps. |
|||
1 |
|||
2: 1 steps. |
|||
2/2 |
|||
3: 1 steps. |
|||
3-2 |
|||
3/3 |
|||
4: 2 steps. |
|||
4-2/2 |
|||
4/2/2 |
|||
5: 2 steps. |
|||
5-2-2 |
|||
5-2/3 |
|||
6: 2 steps. |
|||
6/2-2 |
|||
6/3/2 |
|||
6/2/3 |
|||
7: 3 steps. |
|||
7-2-2-2 |
|||
7-2-2/3 |
|||
8: 3 steps. |
|||
8-2/2-2 |
|||
8/2-2/2 |
|||
8/2/2/2 |
|||
8-2/3/2 |
|||
8-2/2/3 |
|||
9: 2 steps. |
|||
9/3-2 |
|||
9/3/3 |
|||
10: 3 steps. |
|||
10/2-2-2 |
|||
10/2-2/3 |
|||
considering positive integers up to 2000 |
|||
17 steps: 1699 |
|||
considering positive integers up to 20000 |
|||
24 steps: 19681</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |