aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-09-21 13:50:00 +0100
committerGitHub <noreply@github.com>2025-09-21 13:50:00 +0100
commit90acec84c5d60ec80b2bbe1eccb0ba5dfe09caa5 (patch)
tree32f13b03ec80db703fa1087b163c333ed52e1340
parent670b1b015b873be05043eca8a98a5faf186295de (diff)
parent84c47d8a96da34fad09ccd27d2b51a1828039ffb (diff)
downloadperlweeklychallenge-club-90acec84c5d60ec80b2bbe1eccb0ba5dfe09caa5.tar.gz
perlweeklychallenge-club-90acec84c5d60ec80b2bbe1eccb0ba5dfe09caa5.tar.bz2
perlweeklychallenge-club-90acec84c5d60ec80b2bbe1eccb0ba5dfe09caa5.zip
Merge pull request #12707 from arnesom/challenge-339-arne-sommer
week 339 Arne Sommer
-rw-r--r--challenge-339/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-339/arne-sommer/raku/ch-1.raku27
-rwxr-xr-xchallenge-339/arne-sommer/raku/ch-2.raku29
-rwxr-xr-xchallenge-339/arne-sommer/raku/max-diff27
-rwxr-xr-xchallenge-339/arne-sommer/raku/peak-point29
5 files changed, 113 insertions, 0 deletions
diff --git a/challenge-339/arne-sommer/blog.txt b/challenge-339/arne-sommer/blog.txt
new file mode 100644
index 0000000000..d3bc43157d
--- /dev/null
+++ b/challenge-339/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/diff-peak.html \ No newline at end of file
diff --git a/challenge-339/arne-sommer/raku/ch-1.raku b/challenge-339/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..4e08a9eeb4
--- /dev/null
+++ b/challenge-339/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,27 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems >= 4 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my $max = -Inf;
+
+for @ints.combinations(4) -> @comb
+{
+ for (@comb.permutations)[0,2,4] -> @perm
+ {
+ my $diff = (( @perm[0] * @perm[1] ) - ( @perm[2] * @perm[3] )).abs;
+
+ print ": (@perm[0] * @perm[1]) - (@perm[2] * @perm[3]) = $diff" if $verbose;
+
+ if ($diff > $max)
+ {
+ $max = $diff;
+ say " (new max)" if $verbose;
+ }
+ elsif $verbose
+ {
+ say '';
+ }
+ }
+}
+say $max;
diff --git a/challenge-339/arne-sommer/raku/ch-2.raku b/challenge-339/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..4edfb7f5c3
--- /dev/null
+++ b/challenge-339/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@gain where @gain.elems >= 1 && all(@gain) ~~ Int,
+ :v(:$verbose));
+
+my $max = 0;
+my $current = 0;
+
+say ": Start at 0 (new max)" if $verbose;
+
+for @gain -> $change
+{
+ print ": $current + $change = { $current + $change }" if $verbose;
+
+ $current += $change;
+
+ if ($current > $max)
+ {
+ say " (new max)" if $verbose;
+
+ $max = $current;
+ }
+ elsif $verbose
+ {
+ say '';
+ }
+}
+
+say $max;
diff --git a/challenge-339/arne-sommer/raku/max-diff b/challenge-339/arne-sommer/raku/max-diff
new file mode 100755
index 0000000000..4e08a9eeb4
--- /dev/null
+++ b/challenge-339/arne-sommer/raku/max-diff
@@ -0,0 +1,27 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems >= 4 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my $max = -Inf;
+
+for @ints.combinations(4) -> @comb
+{
+ for (@comb.permutations)[0,2,4] -> @perm
+ {
+ my $diff = (( @perm[0] * @perm[1] ) - ( @perm[2] * @perm[3] )).abs;
+
+ print ": (@perm[0] * @perm[1]) - (@perm[2] * @perm[3]) = $diff" if $verbose;
+
+ if ($diff > $max)
+ {
+ $max = $diff;
+ say " (new max)" if $verbose;
+ }
+ elsif $verbose
+ {
+ say '';
+ }
+ }
+}
+say $max;
diff --git a/challenge-339/arne-sommer/raku/peak-point b/challenge-339/arne-sommer/raku/peak-point
new file mode 100755
index 0000000000..4edfb7f5c3
--- /dev/null
+++ b/challenge-339/arne-sommer/raku/peak-point
@@ -0,0 +1,29 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@gain where @gain.elems >= 1 && all(@gain) ~~ Int,
+ :v(:$verbose));
+
+my $max = 0;
+my $current = 0;
+
+say ": Start at 0 (new max)" if $verbose;
+
+for @gain -> $change
+{
+ print ": $current + $change = { $current + $change }" if $verbose;
+
+ $current += $change;
+
+ if ($current > $max)
+ {
+ say " (new max)" if $verbose;
+
+ $max = $current;
+ }
+ elsif $verbose
+ {
+ say '';
+ }
+}
+
+say $max;