aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2024-02-12 22:02:42 +0100
committerarnesom <arne@bbop.org>2024-02-12 22:02:42 +0100
commitee54e95e9af4df401727adb44ff2df0c4ca5e7b4 (patch)
tree2decaede60c8c1b07a55d13fae61a3a321f72016
parent3f3e0798a68401ce1d67a5e1534f69de16856e82 (diff)
downloadperlweeklychallenge-club-ee54e95e9af4df401727adb44ff2df0c4ca5e7b4.tar.gz
perlweeklychallenge-club-ee54e95e9af4df401727adb44ff2df0c4ca5e7b4.tar.bz2
perlweeklychallenge-club-ee54e95e9af4df401727adb44ff2df0c4ca5e7b4.zip
Arne Sommer
-rw-r--r--challenge-256/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-256/arne-sommer/raku/ch-1.raku28
-rwxr-xr-xchallenge-256/arne-sommer/raku/ch-2.raku6
-rwxr-xr-xchallenge-256/arne-sommer/raku/maximum-pairs24
-rwxr-xr-xchallenge-256/arne-sommer/raku/maximum-pairs-palindrome28
-rwxr-xr-xchallenge-256/arne-sommer/raku/merge-strings6
-rwxr-xr-xchallenge-256/arne-sommer/raku/merge-strings-gather27
7 files changed, 120 insertions, 0 deletions
diff --git a/challenge-256/arne-sommer/blog.txt b/challenge-256/arne-sommer/blog.txt
new file mode 100644
index 0000000000..64b4179d82
--- /dev/null
+++ b/challenge-256/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/merged-maximum.html
diff --git a/challenge-256/arne-sommer/raku/ch-1.raku b/challenge-256/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..aa1057def4
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems,
+ :v(:$verbose));
+
+my $words = @words.Set;
+my $count = 0;
+
+for $words.keys.sort -> $word
+{
+ my $reverse = $word.flip;
+
+ if ($word eq $reverse)
+ {
+ say ": Word $word is a palindrome" if $verbose;
+ }
+ elsif $words{$reverse}
+ {
+ $count++;
+ say ": + Word $word has a reverse ({$reverse})" if $verbose;
+ }
+ elsif ($verbose)
+ {
+ say ": Word $word does not have a reverse" if $verbose;
+ }
+}
+
+say $count div 2; \ No newline at end of file
diff --git a/challenge-256/arne-sommer/raku/ch-2.raku b/challenge-256/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..6b5588dfd4
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,6 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 where $str1.chars > 0,
+ $str2 where $str2.chars > 0);
+
+say roundrobin($str1.comb, $str2.comb)>>.join.join;
diff --git a/challenge-256/arne-sommer/raku/maximum-pairs b/challenge-256/arne-sommer/raku/maximum-pairs
new file mode 100755
index 0000000000..e389f6c0ef
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/maximum-pairs
@@ -0,0 +1,24 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems,
+ :v(:$verbose));
+
+my $words = @words.Set;
+my $count = 0;
+
+for $words.keys.sort -> $word
+{
+ my $reverse = $word.flip;
+
+ if $words{$reverse}
+ {
+ $count++;
+ say ": + Word $word has a reverse ({$reverse})" if $verbose;
+ }
+ elsif ($verbose)
+ {
+ say ": Word $word does not have a reverse" if $verbose;
+ }
+}
+
+say $count div 2; \ No newline at end of file
diff --git a/challenge-256/arne-sommer/raku/maximum-pairs-palindrome b/challenge-256/arne-sommer/raku/maximum-pairs-palindrome
new file mode 100755
index 0000000000..aa1057def4
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/maximum-pairs-palindrome
@@ -0,0 +1,28 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 0 && @words.elems == @words.unique.elems,
+ :v(:$verbose));
+
+my $words = @words.Set;
+my $count = 0;
+
+for $words.keys.sort -> $word
+{
+ my $reverse = $word.flip;
+
+ if ($word eq $reverse)
+ {
+ say ": Word $word is a palindrome" if $verbose;
+ }
+ elsif $words{$reverse}
+ {
+ $count++;
+ say ": + Word $word has a reverse ({$reverse})" if $verbose;
+ }
+ elsif ($verbose)
+ {
+ say ": Word $word does not have a reverse" if $verbose;
+ }
+}
+
+say $count div 2; \ No newline at end of file
diff --git a/challenge-256/arne-sommer/raku/merge-strings b/challenge-256/arne-sommer/raku/merge-strings
new file mode 100755
index 0000000000..6b5588dfd4
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/merge-strings
@@ -0,0 +1,6 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 where $str1.chars > 0,
+ $str2 where $str2.chars > 0);
+
+say roundrobin($str1.comb, $str2.comb)>>.join.join;
diff --git a/challenge-256/arne-sommer/raku/merge-strings-gather b/challenge-256/arne-sommer/raku/merge-strings-gather
new file mode 100755
index 0000000000..661dd028b2
--- /dev/null
+++ b/challenge-256/arne-sommer/raku/merge-strings-gather
@@ -0,0 +1,27 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($str1 where $str1.chars > 0,
+ $str2 where $str2.chars > 0,
+ :v(:$verbose));
+
+my $ms := gather
+{
+ my @str1 = $str1.comb;
+ my @str2 = $str2.comb;
+
+ while (@str1.elems || @str2.elems)
+ {
+ if @str1.elems
+ {
+ say ":Fetching character '@str1[0]' from string 1" if $verbose;
+ take @str1.shift;
+ }
+ if @str2.elems
+ {
+ say ":Fetching character '@str2[0]' from string 2" if $verbose;
+ take @str2.shift;
+ }
+ }
+}
+
+say $ms.join;