aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Sommer <arne@bbop.org>2025-10-23 18:07:16 +0200
committerArne Sommer <arne@bbop.org>2025-10-23 18:07:16 +0200
commit43e493797be4cfd9f72aad485e7453e5b9d4184d (patch)
treec05d2d2589f73379788ec1cd8b27d4fbab7e4eaf
parentd8e57eefcd96f5eaa99352e269338c82bd357c9d (diff)
downloadperlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.tar.gz
perlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.tar.bz2
perlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.zip
week 344 Arne Sommer
-rw-r--r--challenge-344/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-344/arne-sommer/raku/array-form-compute8
-rwxr-xr-xchallenge-344/arne-sommer/raku/array-formation25
-rwxr-xr-xchallenge-344/arne-sommer/raku/ch-1.raku8
-rwxr-xr-xchallenge-344/arne-sommer/raku/ch-2.raku25
5 files changed, 67 insertions, 0 deletions
diff --git a/challenge-344/arne-sommer/blog.txt b/challenge-344/arne-sommer/blog.txt
new file mode 100644
index 0000000000..9b4218a09b
--- /dev/null
+++ b/challenge-344/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/form-formation.html \ No newline at end of file
diff --git a/challenge-344/arne-sommer/raku/array-form-compute b/challenge-344/arne-sommer/raku/array-form-compute
new file mode 100755
index 0000000000..9720603414
--- /dev/null
+++ b/challenge-344/arne-sommer/raku/array-form-compute
@@ -0,0 +1,8 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int :$x,
+ *@ints where @ints.elems > 0
+ && all(@ints) ~~ /^<[0..9]>$/);
+
+say "({ (@ints.join + $x).comb.join(", ") })";
+
diff --git a/challenge-344/arne-sommer/raku/array-formation b/challenge-344/arne-sommer/raku/array-formation
new file mode 100755
index 0000000000..28e2da4101
--- /dev/null
+++ b/challenge-344/arne-sommer/raku/array-formation
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@rows where @rows.elems > 0
+ && all(@rows) ~~ /^ <[0..9,]>+ $/,
+ :t(:$target) where $target ~~ /^ <[0..9,]>+ $/,
+ :v(:$verbose));
+
+my @source = @rows>>.split(',')>>.Int;
+my @target = $target.split(',')>>.Int;
+
+for @source.permutations -> @combo
+{
+ my @flat = @combo[*;*];
+ my $equal = @flat eqv @target;
+
+ say ": ({ @combo.map({ "[{ $_.join(",")}]" }).join(", ") }) eq ({ @target.join(",") }): { $equal }" if $verbose;
+
+ if $equal
+ {
+ say 'true';
+ exit;
+ }
+}
+
+say 'false';
diff --git a/challenge-344/arne-sommer/raku/ch-1.raku b/challenge-344/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..9720603414
--- /dev/null
+++ b/challenge-344/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,8 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int :$x,
+ *@ints where @ints.elems > 0
+ && all(@ints) ~~ /^<[0..9]>$/);
+
+say "({ (@ints.join + $x).comb.join(", ") })";
+
diff --git a/challenge-344/arne-sommer/raku/ch-2.raku b/challenge-344/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..28e2da4101
--- /dev/null
+++ b/challenge-344/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@rows where @rows.elems > 0
+ && all(@rows) ~~ /^ <[0..9,]>+ $/,
+ :t(:$target) where $target ~~ /^ <[0..9,]>+ $/,
+ :v(:$verbose));
+
+my @source = @rows>>.split(',')>>.Int;
+my @target = $target.split(',')>>.Int;
+
+for @source.permutations -> @combo
+{
+ my @flat = @combo[*;*];
+ my $equal = @flat eqv @target;
+
+ say ": ({ @combo.map({ "[{ $_.join(",")}]" }).join(", ") }) eq ({ @target.join(",") }): { $equal }" if $verbose;
+
+ if $equal
+ {
+ say 'true';
+ exit;
+ }
+}
+
+say 'false';