aboutsummaryrefslogtreecommitdiff
path: root/challenge-239
diff options
context:
space:
mode:
authorarnesom <arne@bbop.org>2023-10-21 15:10:05 +0200
committerarnesom <arne@bbop.org>2023-10-21 15:10:05 +0200
commit23466f2fd302a570458df9463c86f0becc5b8e62 (patch)
tree1050248fdca5492e560f2025c7b269f783a1de41 /challenge-239
parenta1835fd1a935b02d48de48ef8242136522a540b4 (diff)
downloadperlweeklychallenge-club-23466f2fd302a570458df9463c86f0becc5b8e62.tar.gz
perlweeklychallenge-club-23466f2fd302a570458df9463c86f0becc5b8e62.tar.bz2
perlweeklychallenge-club-23466f2fd302a570458df9463c86f0becc5b8e62.zip
Arne Sommer
Diffstat (limited to 'challenge-239')
-rw-r--r--challenge-239/arne-sommer/blog.txt2
-rwxr-xr-xchallenge-239/arne-sommer/raku/ch-1.raku7
-rwxr-xr-xchallenge-239/arne-sommer/raku/ch-2.raku14
-rwxr-xr-xchallenge-239/arne-sommer/raku/consistent-string14
-rwxr-xr-xchallenge-239/arne-sommer/raku/consistent-string-verbose25
-rwxr-xr-xchallenge-239/arne-sommer/raku/same-string7
-rwxr-xr-xchallenge-239/arne-sommer/raku/same-string-shuffle17
-rwxr-xr-xchallenge-239/arne-sommer/raku/same-string-verbose22
8 files changed, 108 insertions, 0 deletions
diff --git a/challenge-239/arne-sommer/blog.txt b/challenge-239/arne-sommer/blog.txt
new file mode 100644
index 0000000000..cc1c865398
--- /dev/null
+++ b/challenge-239/arne-sommer/blog.txt
@@ -0,0 +1,2 @@
+https://raku-musings.com/nothing-but-strings.html
+
diff --git a/challenge-239/arne-sommer/raku/ch-1.raku b/challenge-239/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..9efc2e8564
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($arr1, $arr2);
+
+say $arr1.words.join eq $arr2.words.join
+ ?? 'true'
+ !! 'false';
diff --git a/challenge-239/arne-sommer/raku/ch-2.raku b/challenge-239/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..91bed81c71
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,14 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($allowed, *@str where @str.elems > 0);
+
+my @allow-canonical = $allowed.comb;
+
+my $consistent = 0;
+
+for @str -> $str
+{
+ $consistent++ if $str.comb.unique (<=) @allow-canonical;
+}
+
+say $consistent;
diff --git a/challenge-239/arne-sommer/raku/consistent-string b/challenge-239/arne-sommer/raku/consistent-string
new file mode 100755
index 0000000000..91bed81c71
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/consistent-string
@@ -0,0 +1,14 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($allowed, *@str where @str.elems > 0);
+
+my @allow-canonical = $allowed.comb;
+
+my $consistent = 0;
+
+for @str -> $str
+{
+ $consistent++ if $str.comb.unique (<=) @allow-canonical;
+}
+
+say $consistent;
diff --git a/challenge-239/arne-sommer/raku/consistent-string-verbose b/challenge-239/arne-sommer/raku/consistent-string-verbose
new file mode 100755
index 0000000000..9577a391c3
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/consistent-string-verbose
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($allowed, *@str where @str.elems > 0, :v(:$verbose));
+
+my @allow-canonical = $allowed.comb;
+
+my $consistent = 0;
+
+for @str -> $str
+{
+ my @str-canonical = $str.comb.unique;
+
+ if @str-canonical (<=) @allow-canonical
+ {
+ $consistent++;
+ say ": + $str - consistent" if $verbose;
+ }
+ elsif $verbose
+ {
+ say ": - $str" if $verbose;
+
+ }
+}
+
+say $consistent;
diff --git a/challenge-239/arne-sommer/raku/same-string b/challenge-239/arne-sommer/raku/same-string
new file mode 100755
index 0000000000..9efc2e8564
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/same-string
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($arr1, $arr2);
+
+say $arr1.words.join eq $arr2.words.join
+ ?? 'true'
+ !! 'false';
diff --git a/challenge-239/arne-sommer/raku/same-string-shuffle b/challenge-239/arne-sommer/raku/same-string-shuffle
new file mode 100755
index 0000000000..b9d2a32ea8
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/same-string-shuffle
@@ -0,0 +1,17 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($arr1, $arr2);
+
+for $arr1.words.permutations>>.join.unique -> $first
+{
+ for $arr2.words.permutations>>.join.unique -> $second
+ {
+ if $first eq $second
+ {
+ say 'true';
+ exit;
+ }
+ }
+}
+
+say 'false';
diff --git a/challenge-239/arne-sommer/raku/same-string-verbose b/challenge-239/arne-sommer/raku/same-string-verbose
new file mode 100755
index 0000000000..8dc1a929c5
--- /dev/null
+++ b/challenge-239/arne-sommer/raku/same-string-verbose
@@ -0,0 +1,22 @@
+#! /usr/bin/env raku
+
+unit sub MAIN ($arr1, $arr2, :v(:$verbose));
+
+for $arr1.words.permutations -> @first
+{
+ for $arr2.words.permutations -> @second
+ {
+ if @first.join eq @second.join
+ {
+ say ": { @first.map({ "\"$_\"" }).join(" ") } === { @second.map({ "\"$_\"" }).join(" ") }" if $verbose;
+ say 'true';
+ exit;
+ }
+ elsif $verbose
+ {
+ say ": { @first.map({ "\"$_\"" }).join(" ") } =!= { @second.map({ "\"$_\"" }).join(" ") }";
+ }
+ }
+}
+
+say 'false';