diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-12-26 17:27:39 +0100 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2022-12-26 17:27:39 +0100 |
| commit | 98d75487e0088ba942d873a437fd74cf560f146f (patch) | |
| tree | 083424db0ac17f57b82cc9676097a757327ebb17 | |
| parent | 63fb76188e132564e50feefd2d9d5b8491568948 (diff) | |
| download | perlweeklychallenge-club-98d75487e0088ba942d873a437fd74cf560f146f.tar.gz perlweeklychallenge-club-98d75487e0088ba942d873a437fd74cf560f146f.tar.bz2 perlweeklychallenge-club-98d75487e0088ba942d873a437fd74cf560f146f.zip | |
solutions week 196
| -rw-r--r-- | challenge-196/wambash/raku/ch-1.raku | 20 | ||||
| -rw-r--r-- | challenge-196/wambash/raku/ch-2.raku | 29 |
2 files changed, 49 insertions, 0 deletions
diff --git a/challenge-196/wambash/raku/ch-1.raku b/challenge-196/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..cd867a9c2c --- /dev/null +++ b/challenge-196/wambash/raku/ch-1.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +sub pattern132 (+@list) { + @list + andthen .combinations: 3 + andthen .first: -> ($i, $j, $k) { $i < $k < $j }\ +} + +multi MAIN (Bool :test($)!) { + use Test; + is pattern132(3,1,4,2),(1,4,2); + is pattern132(1,2,3,4), Nil; + is pattern132(1, 3, 2, 4, 6, 5), (1,3,2); + is pattern132(1, 3, 4, 2), (1,3,2); + done-testing; +} + +multi MAIN (*@list) { + say pattern132 @list +} diff --git a/challenge-196/wambash/raku/ch-2.raku b/challenge-196/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..d4efe9f08e --- /dev/null +++ b/challenge-196/wambash/raku/ch-2.raku @@ -0,0 +1,29 @@ +#!/usr/bin/env raku + +sub range-list-reducer (Capture $a, Int $b) { + $a.tail.tail == $b.pred + ?? \( |$a.head(*-1), (|$a.tail,$b,) ) + !! \( |$a, $b ) +} + +sub range-list (+@list) { + @list + andthen \(.head,), |.skip + andthen .reduce: &range-list-reducer + andthen .grep: Positional + andthen .map: {.head .. .tail} +} + +multi MAIN (Bool :test($)!) { + use Test; + is-deeply range-list-reducer( \(1,(3,4)), 5 ), \(1,(3,4, 5)); + is-deeply range-list-reducer( \(1,(3,4)), 6 ), \(1,(3,4),6 ); + is-deeply range-list(1,3,4,5,7), (3..5,); + is-deeply range-list(1,2,3,6,7,9), (1..3,6..7); + is-deeply range-list(0,1,2,4,5,6,8,9), (0..2, 4..6, 8..9); + done-testing; +} + +multi MAIN (*@list) { + say range-list( @list».Int ) +} |
