aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-06-08 22:59:18 +0100
committerGitHub <noreply@github.com>2025-06-08 22:59:18 +0100
commit31fc5392efc4371a842668481242cd294a991690 (patch)
tree03c1dde1ea3bf3b4f7e08ca0e879031d3b8e5579
parent79ce991b79a0166856e11e7b67f944ad317e62a5 (diff)
parent78bb4835d9beee624cb5f1cd20204f9bbf6bb5de (diff)
downloadperlweeklychallenge-club-31fc5392efc4371a842668481242cd294a991690.tar.gz
perlweeklychallenge-club-31fc5392efc4371a842668481242cd294a991690.tar.bz2
perlweeklychallenge-club-31fc5392efc4371a842668481242cd294a991690.zip
Merge pull request #12143 from arnesom/branch-for-challenge-324
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;