aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Sommer <arne@bbop.org>2025-06-08 18:01:34 +0200
committerArne Sommer <arne@bbop.org>2025-06-08 18:01:34 +0200
commit78bb4835d9beee624cb5f1cd20204f9bbf6bb5de (patch)
tree7d67cbbe4618425ebd9bb44fd8bec64ed2b0b628
parent0d913a6375c00fa781af58cb88a3099afa833b99 (diff)
downloadperlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.tar.gz
perlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.tar.bz2
perlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.zip
Arne Sommer
-rw-r--r--challenge-324/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-324/arne-sommer/raku/2d-array23
-rwxr-xr-xchallenge-324/arne-sommer/raku/ch-1.raku23
-rwxr-xr-xchallenge-324/arne-sommer/raku/ch-2.raku16
-rwxr-xr-xchallenge-324/arne-sommer/raku/total-xor16
-rwxr-xr-xchallenge-324/arne-sommer/raku/total-xor-wrong19
6 files changed, 98 insertions, 0 deletions
diff --git a/challenge-324/arne-sommer/blog.txt b/challenge-324/arne-sommer/blog.txt
new file mode 100644
index 0000000000..4b55b77e5f
--- /dev/null
+++ b/challenge-324/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/xor-2d.html
diff --git a/challenge-324/arne-sommer/raku/2d-array b/challenge-324/arne-sommer/raku/2d-array
new file mode 100755
index 0000000000..84070d6c9d
--- /dev/null
+++ b/challenge-324/arne-sommer/raku/2d-array
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+subset POSINT of Int where * > 0;
+
+unit sub MAIN (POSINT :r(:$rows),
+ POSINT :c(:$cols),
+ *@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+die "Wrong nymber of elems" unless @ints.elems == $rows * $cols;
+
+my @matrix;
+
+while @ints.elems
+{
+ my @row = @ints.splice(0,$cols)>>.Int;
+
+ say ": Row: { @row.join(",") }" if $verbose;
+
+ @matrix.push: @row;
+}
+
+say @matrix.raku; \ No newline at end of file
diff --git a/challenge-324/arne-sommer/raku/ch-1.raku b/challenge-324/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..84070d6c9d
--- /dev/null
+++ b/challenge-324/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+subset POSINT of Int where * > 0;
+
+unit sub MAIN (POSINT :r(:$rows),
+ POSINT :c(:$cols),
+ *@ints where @ints.elems > 0 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+die "Wrong nymber of elems" unless @ints.elems == $rows * $cols;
+
+my @matrix;
+
+while @ints.elems
+{
+ my @row = @ints.splice(0,$cols)>>.Int;
+
+ say ": Row: { @row.join(",") }" if $verbose;
+
+ @matrix.push: @row;
+}
+
+say @matrix.raku; \ No newline at end of file
diff --git a/challenge-324/arne-sommer/raku/ch-2.raku b/challenge-324/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..aea11af481
--- /dev/null
+++ b/challenge-324/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ UInt,
+ :v(:$verbose));
+
+my $total = 0;
+
+for @ints.combinations(1..Inf) -> @comb
+{
+ my $xor = [+^] @comb;
+ $total += $xor;
+
+ say ": [{ @comb.join(",") }] -> $xor" if $verbose;
+}
+
+say $total;
diff --git a/challenge-324/arne-sommer/raku/total-xor b/challenge-324/arne-sommer/raku/total-xor
new file mode 100755
index 0000000000..aea11af481
--- /dev/null
+++ b/challenge-324/arne-sommer/raku/total-xor
@@ -0,0 +1,16 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ UInt,
+ :v(:$verbose));
+
+my $total = 0;
+
+for @ints.combinations(1..Inf) -> @comb
+{
+ my $xor = [+^] @comb;
+ $total += $xor;
+
+ say ": [{ @comb.join(",") }] -> $xor" if $verbose;
+}
+
+say $total;
diff --git a/challenge-324/arne-sommer/raku/total-xor-wrong b/challenge-324/arne-sommer/raku/total-xor-wrong
new file mode 100755
index 0000000000..f8e5032f84
--- /dev/null
+++ b/challenge-324/arne-sommer/raku/total-xor-wrong
@@ -0,0 +1,19 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ UInt,
+ :v(:$verbose));
+
+my $total = 0;
+
+for 0 .. @ints.end -> $i
+{
+ for $i .. @ints.end -> $j
+ {
+ my $xor = [+^] @ints[$i .. $j];
+ $total += $xor;
+
+ say "$i .. $j -> [{ @ints[$i .. $j].join(",") }] -> $xor" if $verbose;
+ }
+}
+
+say $total;