aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;