Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/McNuggets-problem/Perl/mcnuggets-problem-1.pl
Normal file
43
Task/McNuggets-problem/Perl/mcnuggets-problem-1.pl
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
use ntheory qw/forperm gcd vecmin/;
|
||||
|
||||
sub Mcnugget_number {
|
||||
my $counts = shift;
|
||||
|
||||
return 'No maximum' if 1 < gcd @$counts;
|
||||
|
||||
my $min = vecmin @$counts;
|
||||
my @meals;
|
||||
my @min;
|
||||
|
||||
my $a = -1;
|
||||
while (1) {
|
||||
$a++;
|
||||
for my $b (0..$a) {
|
||||
for my $c (0..$b) {
|
||||
my @s = ($a, $b, $c);
|
||||
forperm {
|
||||
$meals[
|
||||
$s[$_[0]] * $counts->[0]
|
||||
+ $s[$_[1]] * $counts->[1]
|
||||
+ $s[$_[2]] * $counts->[2]
|
||||
] = 1;
|
||||
} @s;
|
||||
}
|
||||
}
|
||||
for my $i (0..$#meals) {
|
||||
next unless $meals[$i];
|
||||
if ($min[-1] and $i == ($min[-1] + 1)) {
|
||||
push @min, $i;
|
||||
last if $min == @min
|
||||
} else {
|
||||
@min = $i;
|
||||
}
|
||||
}
|
||||
last if $min == @min
|
||||
}
|
||||
$min[0] ? $min[0] - 1 : 0
|
||||
}
|
||||
|
||||
for my $counts ([6,9,20], [6,7,20], [1,3,20], [10,5,18], [5,17,44], [2,4,6], [3,6,15]) {
|
||||
print 'Maximum non-Mcnugget number using ' . join(', ', @$counts) . ' is: ' . Mcnugget_number($counts) . "\n"
|
||||
}
|
||||
6
Task/McNuggets-problem/Perl/mcnuggets-problem-2.pl
Normal file
6
Task/McNuggets-problem/Perl/mcnuggets-problem-2.pl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
$_ = 1 . 0 x 100;
|
||||
1 while s/ (?=1) (?:.{6}|.{9}|.{20}) \K 0 /1/x;
|
||||
/01*$/ and print "Maximum non-Mcnugget number is: $-[0]\n";
|
||||
Loading…
Add table
Add a link
Reference in a new issue