aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2023-12-26 18:43:14 +0100
committerarnesom <arne@bbop.org>2023-12-26 18:43:14 +0100
commit057e65c8cdea0ae55a2094b855acf80da1f5dec0 (patch)
treef4649f635223aff0b693a881fb2986ead20cc3af
parent2fe9fe92abffa2fb01e876e42a07a8da80aacac9 (diff)
downloadperlweeklychallenge-club-057e65c8cdea0ae55a2094b855acf80da1f5dec0.tar.gz
perlweeklychallenge-club-057e65c8cdea0ae55a2094b855acf80da1f5dec0.tar.bz2
perlweeklychallenge-club-057e65c8cdea0ae55a2094b855acf80da1f5dec0.zip
Arne Sommer
-rw-r--r--challenge-249/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-249/arne-sommer/raku/ch-1.raku28
-rwxr-xr-xchallenge-249/arne-sommer/raku/ch-2.raku25
-rwxr-xr-xchallenge-249/arne-sommer/raku/di-string-match25
-rwxr-xr-xchallenge-249/arne-sommer/raku/equal-pairs28
5 files changed, 107 insertions, 0 deletions
diff --git a/challenge-249/arne-sommer/blog.txt b/challenge-249/arne-sommer/blog.txt
new file mode 100644
index 0000000000..9c3ec53f8a
--- /dev/null
+++ b/challenge-249/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/equal-di.html
diff --git a/challenge-249/arne-sommer/raku/ch-1.raku b/challenge-249/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..96989560ee
--- /dev/null
+++ b/challenge-249/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems %% 2 && @ints.elems > 0 && all(@ints) ~~ Int, :v(:$verbose));
+
+my @output;
+my @sorted = @ints>>.Int.sort;
+
+say ":Sorted: { @sorted.join(",") }" if $verbose;
+
+while @sorted
+{
+ my $first = @sorted.shift;
+ my $second = @sorted.shift;
+
+ if $first == $second
+ {
+ @output.push: ($first, $second);
+ say ":Pair: $first,$second" if $verbose;
+ }
+ else
+ {
+ say ":Non-pair: $first,$second" if $verbose;
+ say "()";
+ exit;
+ }
+}
+
+say @output.map({ "($_[0], $_[1])"}).join(", ");
diff --git a/challenge-249/arne-sommer/raku/ch-2.raku b/challenge-249/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..9f90401bc1
--- /dev/null
+++ b/challenge-249/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($s where $s ~~ /^<[ID]>+$/, :v(:$verbose));
+
+my @output;
+my @integers = (0 .. $s.chars);
+
+for $s.comb -> $char
+{
+ if $char eq "I"
+ {
+ @output.push: @integers.shift;
+ say ":I -> lowest integer { @output.tail }" if $verbose;
+ }
+ else
+ {
+ @output.push: @integers.pop;
+ say ":D -> highest integer { @output.tail }" if $verbose;
+ }
+}
+
+@output.push: @integers[0];
+say ": -> remaining integer { @output.tail }" if $verbose;
+
+say "({ @output.join(", ") })";
diff --git a/challenge-249/arne-sommer/raku/di-string-match b/challenge-249/arne-sommer/raku/di-string-match
new file mode 100755
index 0000000000..9f90401bc1
--- /dev/null
+++ b/challenge-249/arne-sommer/raku/di-string-match
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($s where $s ~~ /^<[ID]>+$/, :v(:$verbose));
+
+my @output;
+my @integers = (0 .. $s.chars);
+
+for $s.comb -> $char
+{
+ if $char eq "I"
+ {
+ @output.push: @integers.shift;
+ say ":I -> lowest integer { @output.tail }" if $verbose;
+ }
+ else
+ {
+ @output.push: @integers.pop;
+ say ":D -> highest integer { @output.tail }" if $verbose;
+ }
+}
+
+@output.push: @integers[0];
+say ": -> remaining integer { @output.tail }" if $verbose;
+
+say "({ @output.join(", ") })";
diff --git a/challenge-249/arne-sommer/raku/equal-pairs b/challenge-249/arne-sommer/raku/equal-pairs
new file mode 100755
index 0000000000..96989560ee
--- /dev/null
+++ b/challenge-249/arne-sommer/raku/equal-pairs
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems %% 2 && @ints.elems > 0 && all(@ints) ~~ Int, :v(:$verbose));
+
+my @output;
+my @sorted = @ints>>.Int.sort;
+
+say ":Sorted: { @sorted.join(",") }" if $verbose;
+
+while @sorted
+{
+ my $first = @sorted.shift;
+ my $second = @sorted.shift;
+
+ if $first == $second
+ {
+ @output.push: ($first, $second);
+ say ":Pair: $first,$second" if $verbose;
+ }
+ else
+ {
+ say ":Non-pair: $first,$second" if $verbose;
+ say "()";
+ exit;
+ }
+}
+
+say @output.map({ "($_[0], $_[1])"}).join(", ");