31 lines
810 B
Raku
31 lines
810 B
Raku
sub Mcnugget-number (*@counts) {
|
|
|
|
return '∞' if 1 < [gcd] @counts;
|
|
|
|
my $min = min @counts;
|
|
my @meals;
|
|
my @min;
|
|
|
|
for ^Inf -> $a {
|
|
for 0..$a -> $b {
|
|
for 0..$b -> $c {
|
|
($a, $b, $c).permutations.map: { @meals[ sum $_ Z* @counts ] = True }
|
|
}
|
|
}
|
|
for @meals.grep: so *, :k {
|
|
if @min.tail and @min.tail + 1 == $_ {
|
|
@min.push: $_;
|
|
last if $min == +@min
|
|
} else {
|
|
@min = $_;
|
|
}
|
|
}
|
|
last if $min == +@min
|
|
}
|
|
@min[0] ?? @min[0] - 1 !! 0
|
|
}
|
|
|
|
for (6,9,20), (6,7,20), (1,3,20), (10,5,18), (5,17,44), (2,4,6), (3,6,15) -> $counts {
|
|
put "Maximum non-Mcnugget number using {$counts.join: ', '} is: ",
|
|
Mcnugget-number(|$counts)
|
|
}
|