aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2022-07-06 01:19:50 +0100
committerdrbaggy <js5@sanger.ac.uk>2022-07-06 01:19:50 +0100
commit2f902fb082a394f511f83dc9b23d20ca44ee08ea (patch)
tree874a4f43439429a29752cbf0d6ad88e5798c3661
parentfe32ae54b9a8097119b2d2063b43b663e3d0ad2b (diff)
downloadperlweeklychallenge-club-2f902fb082a394f511f83dc9b23d20ca44ee08ea.tar.gz
perlweeklychallenge-club-2f902fb082a394f511f83dc9b23d20ca44ee08ea.tar.bz2
perlweeklychallenge-club-2f902fb082a394f511f83dc9b23d20ca44ee08ea.zip
added single result task 1
-rw-r--r--challenge-172/james-smith/perl/ch-1.pl12
1 files changed, 11 insertions, 1 deletions
diff --git a/challenge-172/james-smith/perl/ch-1.pl b/challenge-172/james-smith/perl/ch-1.pl
index 9c6b5f5060..22443bb063 100644
--- a/challenge-172/james-smith/perl/ch-1.pl
+++ b/challenge-172/james-smith/perl/ch-1.pl
@@ -14,7 +14,7 @@ my @TESTS = (
);
my @t;
-say "*** @{$_}\n\n", _dump( partition(@{$_}) ), "\n" for @TESTS;
+say "*** @{$_}\n", _dump( first_partition(@{$_}) ), "\n--\n", _dump( partition(@{$_}) ), "\n" for @TESTS;
if(0){
say '===============================';
@@ -34,6 +34,16 @@ sub partition {
: $m > $p && is_prime $m ? [$m] : ();
}
+sub first_partition {
+ my ( $m, $n, $p ) = (@_,0);
+ $n > 1
+ ? map { $p = $_;
+ map { return [$p, @{$_}] }
+ first_partition( $m-$p, $n-1, $p )
+ } @{ primes $p+1, int( ($m-$n/2+1/2)/$n) }
+ : $m > $p && is_prime $m ? [$m] : ();
+}
+
sub _dump {
@_ ? join ', ', map { '[ '. join(', ', @{$_}).' ]' } @_ : '-- no solutions --';
}