From f4a233528cf371b118c08704f5a84a0c03325ecd Mon Sep 17 00:00:00 2001 From: juliodcs Date: Sun, 27 Dec 2020 23:39:04 +0100 Subject: juliodcs-week92 --- challenge-092/juliodcs/raku/ch-1.raku | 8 ++++++++ challenge-092/juliodcs/raku/ch-2.raku | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 challenge-092/juliodcs/raku/ch-1.raku create mode 100644 challenge-092/juliodcs/raku/ch-2.raku 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; -- cgit