aboutsummaryrefslogtreecommitdiff
path: root/challenge-092
diff options
context:
space:
mode:
authorjuliodcs <julio.dcs@gmail.com>2020-12-27 23:39:04 +0100
committerjuliodcs <julio.dcs@gmail.com>2020-12-27 23:39:04 +0100
commitf4a233528cf371b118c08704f5a84a0c03325ecd (patch)
treee6f7c283b6bb8ffb1fd57f92cd7e8fa1ba2b3167 /challenge-092
parentc35dbff0ed10a535921cbb598aae211300657c4f (diff)
downloadperlweeklychallenge-club-f4a233528cf371b118c08704f5a84a0c03325ecd.tar.gz
perlweeklychallenge-club-f4a233528cf371b118c08704f5a84a0c03325ecd.tar.bz2
perlweeklychallenge-club-f4a233528cf371b118c08704f5a84a0c03325ecd.zip
juliodcs-week92
Diffstat (limited to 'challenge-092')
-rw-r--r--challenge-092/juliodcs/raku/ch-1.raku8
-rw-r--r--challenge-092/juliodcs/raku/ch-2.raku22
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-092/juliodcs/raku/ch-1.raku b/challenge-092/juliodcs/raku/ch-1.raku
new file mode 100644
index 0000000000..1fea02117a
--- /dev/null
+++ b/challenge-092/juliodcs/raku/ch-1.raku
@@ -0,0 +1,8 @@
+#! /usr/bin/env raku
+
+unit sub MAIN($a, $b);
+
+my &single = -> $string { $string.subst: /(.)$0*/, {" $0"}, :g }
+my &equal = -> $a, $b { $a eq $b.trans(single($b) => single($a)) }
+
+say +(equal($a, $b) && equal($b, $a))
diff --git a/challenge-092/juliodcs/raku/ch-2.raku b/challenge-092/juliodcs/raku/ch-2.raku
new file mode 100644
index 0000000000..4e6d8417c0
--- /dev/null
+++ b/challenge-092/juliodcs/raku/ch-2.raku
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+sub add-new(@s, $n) {
+ sort |@s, $n
+}
+
+sub merge($range1, $range2) {
+ $range1.list ∩ $range2
+ ?? min($range1.head, $range2.head) .. max($range1.tail, $range2.tail)
+ !! $range1
+}
+
+sub re-merge(@ranges) {
+ @ranges.rotor(2 => -1).map({ [∩] $_ }).grep(*.elems > 0).elems > 0
+ ?? re-merge @ranges.rotor(2 => -1).map({ merge .head, .tail })
+ !! @ranges
+}
+
+my @s = (1 .. 2, 3 .. 7, 8 .. 10);
+my $n = 5 .. 8;
+
+say re-merge add-new @s, $n;