diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-09-21 13:50:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-21 13:50:00 +0100 |
| commit | 90acec84c5d60ec80b2bbe1eccb0ba5dfe09caa5 (patch) | |
| tree | 32f13b03ec80db703fa1087b163c333ed52e1340 | |
| parent | 670b1b015b873be05043eca8a98a5faf186295de (diff) | |
| parent | 84c47d8a96da34fad09ccd27d2b51a1828039ffb (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-339/arne-sommer/raku/ch-1.raku | 27 | ||||
| -rwxr-xr-x | challenge-339/arne-sommer/raku/ch-2.raku | 29 | ||||
| -rwxr-xr-x | challenge-339/arne-sommer/raku/max-diff | 27 | ||||
| -rwxr-xr-x | challenge-339/arne-sommer/raku/peak-point | 29 |
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; |
