aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2022-02-15 14:59:31 +0000
committerdrbaggy <js5@sanger.ac.uk>2022-02-15 14:59:31 +0000
commit1d943d93e690408fa34124bbcecf0f908eff5c1d (patch)
treed3116529f6427e001ae1159c110e6df5683476ef
parent5e1b8f19d3e1d29dce68c9b68e1f5757eb8ac3fb (diff)
downloadperlweeklychallenge-club-1d943d93e690408fa34124bbcecf0f908eff5c1d.tar.gz
perlweeklychallenge-club-1d943d93e690408fa34124bbcecf0f908eff5c1d.tar.bz2
perlweeklychallenge-club-1d943d93e690408fa34124bbcecf0f908eff5c1d.zip
many tidies up
-rw-r--r--challenge-152/james-smith/perl/ch-1.pl30
1 files changed, 12 insertions, 18 deletions
diff --git a/challenge-152/james-smith/perl/ch-1.pl b/challenge-152/james-smith/perl/ch-1.pl
index 17630026ed..8b013c4ca8 100644
--- a/challenge-152/james-smith/perl/ch-1.pl
+++ b/challenge-152/james-smith/perl/ch-1.pl
@@ -22,33 +22,27 @@ done_testing();
sub min_path {
my @p = map { [0,[]] } 0,my @t = reverse @{$_[0]};
- for my $r (@t) {
- my($l,@q) = shift @p;
- ( push @q, $l->[0] < $p[0][0]
- ? [ $_+$l->[0], [ $_, @{$l->[1]} ] ]
- : [ $_+$p[0][0], [ $_, @{$p[0][1]} ] ]
- ), $l = shift @p for @{$r};
- @p = @q;
- }
+ @p = map {
+ $p[0][0] < $p[1][0]
+ ? [ $_+$p[0][0], [ $_, @{$p[0][1]} ] ]
+ : [ $_+$p[1][0], [ $_, @{$p[1][1]} ] ],
+ (shift @p) x 0
+ } @{$_} for @t;
say sprintf 'Minimum value %d: [ %s ]', $p[0][0], join ', ', @{$p[0][1]};
$p[0][0];
}
sub min_path_total {
- my @p = map { 0 } 0,my @t = reverse @{$_[0]};
- for my $r (@t) {
- my($l,@q) = shift @p;
- ( push @q, $_ + ( $l < $p[0] ? $l : $p[0] ) ), $l = shift @p for @{$r};
- @p = @q;
- }
+ my @p = map { 0 } 0, my @t = reverse @{$_[0]};
+ @p = map { $_ + $p[ $p[0] < $p[1] ? 0 : 1 ], (shift @p)x 0 } @{$_} for @t;
$p[0];
}
sub min_path_anydir {
my ($res,@order) = 0;
foreach(@{$_[0]}) {
- my $min = $_[0][0];
- $min = $_ < $min ? $_ : $min for @{$_};
+ my $min = $_->[0];
+ $_<$min && ($min = $_) for @{$_};
$res+= $min;
push @order, $min;
}
@@ -59,8 +53,8 @@ sub min_path_anydir {
sub min_path_anydir_total {
my $res = 0;
foreach(@{$_[0]}) {
- my $min = $_[0][0];
- $min = $_ < $min ? $_ : $min for @{$_};
+ my $min = $_->[0];
+ $_ < $min && ($min = $_) for @{$_};
$res+= $min;
}
$res;