aboutsummaryrefslogtreecommitdiff
path: root/challenge-238
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-10-15 22:10:53 +0100
committerGitHub <noreply@github.com>2023-10-15 22:10:53 +0100
commit5a0dc240cdca34092c50d5948e35d861790b3525 (patch)
tree7390f2a518cf7853217eb39e2e9780079a310db1 /challenge-238
parent4f0fe5ef64424dc0771a002c196357ebce4c5cff (diff)
parentac3a97d52d8e1ddc9d5732707ebdbb281d7336da (diff)
downloadperlweeklychallenge-club-5a0dc240cdca34092c50d5948e35d861790b3525.tar.gz
perlweeklychallenge-club-5a0dc240cdca34092c50d5948e35d861790b3525.tar.bz2
perlweeklychallenge-club-5a0dc240cdca34092c50d5948e35d861790b3525.zip
Merge pull request #8873 from BarrOff/barroff-238
feat: add solutions for challenge 238 from BarrOff
Diffstat (limited to 'challenge-238')
-rw-r--r--challenge-238/barroff/perl/ch-1.pl34
-rw-r--r--challenge-238/barroff/raku/ch-1.p630
2 files changed, 64 insertions, 0 deletions
diff --git a/challenge-238/barroff/perl/ch-1.pl b/challenge-238/barroff/perl/ch-1.pl
new file mode 100644
index 0000000000..f48034cc7e
--- /dev/null
+++ b/challenge-238/barroff/perl/ch-1.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/env perl
+
+use v5.38;
+
+use List::Util qw/sum/;
+
+sub running_sum ( $rs, @ints ) {
+ return $rs + $ints[0] if @ints == 1;
+ return (
+ ( $rs + $ints[0], running_sum( $rs + $ints[0], @ints[ 1 .. $#ints ] ) )
+ );
+}
+
+sub MAIN() {
+ if (@ARGV) {
+
+ #| Run command line arguments
+ say running_sum(@ARGV);
+ }
+ else {
+ #| Run test cases
+ use Test2::V0 qw( is plan );
+ plan 3;
+
+ is eval 'join " ", running_sum(0, ( 1, 2, 3, 4, 5 ) )',
+ '1 3 6 10 15', 'works for (1, 2, 3, 4, 5)';
+ is eval 'join " ", running_sum(0, ( 1, 1, 1, 1, 1 ) )',
+ '1 2 3 4 5', 'works for (1, 1, 1, 1, 1)';
+ is eval 'join " ", running_sum(0, ( 0, -1, 1, 2) )',
+ '0 -1 0 2', 'works for (0, -1, 1, 2)';
+ }
+}
+
+MAIN();
diff --git a/challenge-238/barroff/raku/ch-1.p6 b/challenge-238/barroff/raku/ch-1.p6
new file mode 100644
index 0000000000..965d6ccc06
--- /dev/null
+++ b/challenge-238/barroff/raku/ch-1.p6
@@ -0,0 +1,30 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub running-sum(@ints, Int:D $rs = 0 --> Positional:D) {
+ given @ints.elems {
+ when 1 { return [@ints[0] + $rs] }
+ default { my $new_rs = @ints[0] + $rs;
+ return [$new_rs, |running-sum(@ints[1..*], $new_rs)]
+ }
+ }
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 3;
+
+ is running-sum([1, 2, 3, 4, 5]), [1, 3, 6, 10, 15],
+ 'works for (1, 2, 3, 4, 5)';
+ is running-sum([1, 1, 1, 1, 1]), [1, 2, 3, 4, 5],
+ 'works for (1, 1, 1, 1, 1)';
+ is running-sum([0, -1, 1, 2]), [0, -1, 0, 2],
+ 'works for (0, -1, 1, 2)';
+}
+
+#| Take user provided list like 1 1 2 2 2 3
+multi sub MAIN(*@ints where @ints.elems ≥ 1) {
+ say running-sum(@ints);
+}