aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2022-12-26 17:27:39 +0100
committerJan Krňávek <Jan.Krnavek@gmail.com>2022-12-26 17:27:39 +0100
commit98d75487e0088ba942d873a437fd74cf560f146f (patch)
tree083424db0ac17f57b82cc9676097a757327ebb17
parent63fb76188e132564e50feefd2d9d5b8491568948 (diff)
downloadperlweeklychallenge-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.raku20
-rw-r--r--challenge-196/wambash/raku/ch-2.raku29
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 )
+}