Minimal steps down to 1: Difference between revisions

→‎{{header|Perl 6}}: Less verbose output
m (→‎{{header|zkl}}: update to match task)
(→‎{{header|Perl 6}}: Less verbose output)
Line 71:
my @max = %min.grep( {.value.<s> == $max} )».key.sort(+*);
 
if $limit == 2000 {
say "\nDivisors: {@div.perl}, subtract: $sub, threshold: {comma $limit}\n" ~;
"Below {comma $limit} found {+@max} number{+@max == 1 ?? '' !! 's'} " ~
steps(1..10);
}
say "\nUp "Belowto {comma $limit} found {+@max} number{+@max == 1 ?? '' !! 's'} " ~
"that require{+@max == 1 ?? 's' !! ''} at least $max steps.";
steps(@max);
 
forsub flat 1..10,steps (*@max -> $mlist) {
myfor @op;list -> $m {
my $n = $m my @op;
while %min{ my $n}<s> {= $m;
@op.push:while "{%min{$n}<op>}=s> {%min{$n}<v>}";
@op.push: "{%min{$n }<op>}= >{%min{$n}<v>}";
$n = %min{$n}<v>;
}
say "($m) {%min{$m}<s>} steps: ", @op.join(', ');
}
say "($m) {%min{$m}<s>} steps: ", @op.join(', ');
}
}</lang>
{{out}}
<pre>Divisors: [2, 3], subtract: 1, threshold: 2,000
Below 2,000 found 16 numbers that require at least 14 steps.
(1) 0 steps:
(2) 1 steps: /2=>1
Line 98 ⟶ 103:
(9) 2 steps: /3=>3, /3=>1
(10) 3 steps: -1=>9, /3=>3, /3=>1
 
BelowUp to 2,000 found 16 numbers that require at least 14 steps.
(863) 14 steps: -1=>862, -1=>861, /3=>287, -1=>286, -1=>285, /3=>95, -1=>94, -1=>93, /3=>31, -1=>30, /3=>10, -1=>9, /3=>3, /3=>1
(1079) 14 steps: -1=>1078, /2=>539, -1=>538, /2=>269, -1=>268, /2=>134, /2=>67, -1=>66, /2=>33, /3=>11, -1=>10, -1=>9, /3=>3, /3=>1
Line 115 ⟶ 122:
(1943) 14 steps: -1=>1942, /2=>971, -1=>970, /2=>485, -1=>484, /2=>242, /2=>121, -1=>120, /2=>60, /2=>30, /3=>10, -1=>9, /3=>3, /3=>1
 
BelowUp to 50,000 found 3 numbers that require at least 22 steps.
Divisors: [2, 3], subtract: 1, threshold: 50,000
Below 50,000 found 3 numbers that require at least 22 steps.
(1) 0 steps:
(2) 1 steps: /2=>1
(3) 1 steps: /3=>1
(4) 2 steps: /2=>2, /2=>1
(5) 3 steps: -1=>4, /2=>2, /2=>1
(6) 2 steps: /2=>3, /3=>1
(7) 3 steps: -1=>6, /2=>3, /3=>1
(8) 3 steps: /2=>4, /2=>2, /2=>1
(9) 2 steps: /3=>3, /3=>1
(10) 3 steps: -1=>9, /3=>3, /3=>1
(25919) 22 steps: -1=>25918, /2=>12959, -1=>12958, /2=>6479, -1=>6478, /2=>3239, -1=>3238, /2=>1619, -1=>1618, /2=>809, -1=>808, /2=>404, /2=>202, /2=>101, -1=>100, /2=>50, /2=>25, -1=>24, /2=>12, /2=>6, /2=>3, /3=>1
(31103) 22 steps: -1=>31102, /2=>15551, -1=>15550, /2=>7775, -1=>7774, /2=>3887, -1=>3886, /2=>1943, -1=>1942, /2=>971, -1=>970, /2=>485, -1=>484, /2=>242, /2=>121, -1=>120, /2=>60, /2=>30, /3=>10, -1=>9, /3=>3, /3=>1
(38879) 22 steps: -1=>38878, /2=>19439, -1=>19438, /2=>9719, -1=>9718, /2=>4859, -1=>4858, /2=>2429, -1=>2428, /2=>1214, /2=>607, -1=>606, /2=>303, /3=>101, -1=>100, /2=>50, /2=>25, -1=>24, /2=>12, /2=>6, /2=>3, /3=>1
 
Divisors: [2, 3], subtract: 2, threshold: 2,000
Below 2,000 found 1 number that requires at least 17 steps.
(1) 0 steps:
(2) 1 steps: /2=>1
Line 143 ⟶ 138:
(9) 2 steps: /3=>3, /3=>1
(10) 3 steps: /2=>5, -2=>3, /3=>1
 
BelowUp to 2,000 found 1 number that requires at least 17 steps.
(1699) 17 steps: -2=>1697, -2=>1695, /3=>565, -2=>563, -2=>561, /3=>187, -2=>185, -2=>183, /3=>61, -2=>59, -2=>57, /3=>19, -2=>17, -2=>15, /3=>5, -2=>3, /3=>1
 
BelowUp to 50,000 found 1 number that requires at least 26 steps.
Divisors: [2, 3], subtract: 2, threshold: 50,000
Below 50,000 found 1 number that requires at least 26 steps.
(1) 0 steps:
(2) 1 steps: /2=>1
(3) 1 steps: /3=>1
(4) 2 steps: /2=>2, /2=>1
(5) 2 steps: -2=>3, /3=>1
(6) 2 steps: /2=>3, /3=>1
(7) 3 steps: -2=>5, -2=>3, /3=>1
(8) 3 steps: /2=>4, /2=>2, /2=>1
(9) 2 steps: /3=>3, /3=>1
(10) 3 steps: /2=>5, -2=>3, /3=>1
(45925) 26 steps: -2=>45923, -2=>45921, /3=>15307, -2=>15305, -2=>15303, /3=>5101, -2=>5099, -2=>5097, /3=>1699, -2=>1697, -2=>1695, /3=>565, -2=>563, -2=>561, /3=>187, -2=>185, -2=>183, /3=>61, -2=>59, -2=>57, /3=>19, -2=>17, -2=>15, /3=>5, -2=>3, /3=>1</pre>
 
10,333

edits