diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-06-08 22:59:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-08 22:59:18 +0100 |
| commit | 31fc5392efc4371a842668481242cd294a991690 (patch) | |
| tree | 03c1dde1ea3bf3b4f7e08ca0e879031d3b8e5579 | |
| parent | 79ce991b79a0166856e11e7b67f944ad317e62a5 (diff) | |
| parent | 78bb4835d9beee624cb5f1cd20204f9bbf6bb5de (diff) | |
| download | perlweeklychallenge-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.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; |
