aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-325/kjetillll/perl/ch-1.pl18
-rw-r--r--challenge-325/kjetillll/perl/ch-2.pl10
2 files changed, 28 insertions, 0 deletions
diff --git a/challenge-325/kjetillll/perl/ch-1.pl b/challenge-325/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..86a9608542
--- /dev/null
+++ b/challenge-325/kjetillll/perl/ch-1.pl
@@ -0,0 +1,18 @@
+sub f {
+ my($c, $max) = (0, 0);
+ for(@_){
+ $c = $_ ? $c+1 : 0;
+ $max = $c if $c > $max;
+ }
+ $max
+}
+
+sub f2 {
+ (sort {$b <=> $a } map length, join('',@_) =~ /1+/g )[0]
+}
+
+for my $f ( \&f, \&f2 ) {
+ print $f->(0, 1, 1, 0, 1, 1, 1) == 3 ? "ok\n" : "err\n";
+ print $f->(0, 0, 0, 0) == 0 ? "ok\n" : "err\n";
+ print $f->(1, 0, 1, 0, 1, 1) == 2 ? "ok\n" : "err\n";
+}
diff --git a/challenge-325/kjetillll/perl/ch-2.pl b/challenge-325/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..7fed48a5c0
--- /dev/null
+++ b/challenge-325/kjetillll/perl/ch-2.pl
@@ -0,0 +1,10 @@
+use List::Util 'first';
+
+sub f {
+ my $price_1st = shift // return;
+ $price_1st - ( first { $_ <= $price_1st } @_ ), f(@_)
+}
+
+print join(',', f(8, 4, 6, 2, 3) ) eq '4,2,4,2,3' ? "ok\n" : "err\n";
+print join(',', f(1, 2, 3, 4, 5) ) eq '1,2,3,4,5' ? "ok\n" : "err\n";
+print join(',', f(7, 1, 1, 5) ) eq '6,0,1,5' ? "ok\n" : "err\n";