diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-08-31 13:15:48 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-31 13:15:48 +0100 |
| commit | 439fc065638af844b9a3117acbf9ea68bfb08000 (patch) | |
| tree | 0a2e697c24e2e05a66a44be9cd53609c6fafbd41 | |
| parent | 5cf25c32acd8d6d30dcdea2228e16b13af49f79b (diff) | |
| parent | 11cabcb3418e83674d46ba4716abb9e801e51cf6 (diff) | |
| download | perlweeklychallenge-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.raku | 25 | ||||
| -rw-r--r-- | challenge-336/wambash/raku/ch-2.raku | 38 |
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; +} |
