diff options
| author | Arne Sommer <arne@bbop.org> | 2025-06-08 18:01:34 +0200 |
|---|---|---|
| committer | Arne Sommer <arne@bbop.org> | 2025-06-08 18:01:34 +0200 |
| commit | 78bb4835d9beee624cb5f1cd20204f9bbf6bb5de (patch) | |
| tree | 7d67cbbe4618425ebd9bb44fd8bec64ed2b0b628 | |
| parent | 0d913a6375c00fa781af58cb88a3099afa833b99 (diff) | |
| download | perlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.tar.gz perlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.tar.bz2 perlweeklychallenge-club-78bb4835d9beee624cb5f1cd20204f9bbf6bb5de.zip | |
Arne Sommer
| -rw-r--r-- | challenge-324/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-324/arne-sommer/raku/2d-array | 23 | ||||
| -rwxr-xr-x | challenge-324/arne-sommer/raku/ch-1.raku | 23 | ||||
| -rwxr-xr-x | challenge-324/arne-sommer/raku/ch-2.raku | 16 | ||||
| -rwxr-xr-x | challenge-324/arne-sommer/raku/total-xor | 16 | ||||
| -rwxr-xr-x | challenge-324/arne-sommer/raku/total-xor-wrong | 19 |
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; |
