aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-31 13:15:48 +0100
committerGitHub <noreply@github.com>2025-08-31 13:15:48 +0100
commit439fc065638af844b9a3117acbf9ea68bfb08000 (patch)
tree0a2e697c24e2e05a66a44be9cd53609c6fafbd41
parent5cf25c32acd8d6d30dcdea2228e16b13af49f79b (diff)
parent11cabcb3418e83674d46ba4716abb9e801e51cf6 (diff)
downloadperlweeklychallenge-club-439fc065638af844b9a3117acbf9ea68bfb08000.tar.gz
perlweeklychallenge-club-439fc065638af844b9a3117acbf9ea68bfb08000.tar.bz2
perlweeklychallenge-club-439fc065638af844b9a3117acbf9ea68bfb08000.zip
Merge pull request #12599 from wambash/challenge-week-336
solutions week 336
-rw-r--r--challenge-336/wambash/raku/ch-1.raku25
-rw-r--r--challenge-336/wambash/raku/ch-2.raku38
2 files changed, 63 insertions, 0 deletions
diff --git a/challenge-336/wambash/raku/ch-1.raku b/challenge-336/wambash/raku/ch-1.raku
new file mode 100644
index 0000000000..1bb1d97cc8
--- /dev/null
+++ b/challenge-336/wambash/raku/ch-1.raku
@@ -0,0 +1,25 @@
+#!/usr/bin/env raku
+use v6.e.PREVIEW;
+
+sub equal-group (+ints) {
+ ints
+ andthen True, |.rotor( 2 => -1 )
+ andthen .snip: { [==] $_ }\
+ andthen .map: *.elems
+ andthen [gcd] $_
+ andthen * > 1
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is equal-group(1,1,2,2,2,2), True;
+ is equal-group(1,1,1,2,2,2,3,3), False;
+ is equal-group(5,5,5,5,5,5,7,7,7,7,7,7), True;
+ is equal-group(1..4), False;
+ is equal-group(8,8,9,9,10,10,11,11), True;
+ done-testing;
+}
+
+multi MAIN (+ints) {
+ say equal-group ints;
+}
diff --git a/challenge-336/wambash/raku/ch-2.raku b/challenge-336/wambash/raku/ch-2.raku
new file mode 100644
index 0000000000..37b9ee14a4
--- /dev/null
+++ b/challenge-336/wambash/raku/ch-2.raku
@@ -0,0 +1,38 @@
+#!/usr/bin/env raku
+
+multi final-score-reducer (($score,@last ($l,*@)), 'D') {
+ ($score + $l*2, ($l*2,|@last))
+}
+
+multi final-score-reducer (($score, ($l,*@rest)), 'C') {
+ ($score-$l, @rest)
+}
+
+multi final-score-reducer (($score,@last ($f,$s,*@)), '+') {
+ ($score+ $f+$s, ($f+$s,|@last))
+}
+
+multi final-score-reducer (($score,@last), Int() $n) {
+ ($score+$n ,($n, |@last))
+}
+
+sub final-score (+scores) {
+ scores
+ andthen (0,()),|scores
+ andthen .reduce: &final-score-reducer
+ andthen .head
+}
+
+multi MAIN (Bool :test($)!) {
+ use Test;
+ is-deeply final-score(<5 2 C D +>), 30;
+ is-deeply final-score("5","-2","4","C","D","9","+","+"), 27;
+ is-deeply final-score(<7 D D C + 3>), 45;
+ is-deeply final-score(<-5 -10 + D C +>), -55;
+ is-deeply final-score(("3","6","+","D","C","8","+","D","-2","C","+")), 128;
+ done-testing;
+}
+
+multi MAIN (+scores) {
+ say final-score scores;
+}