diff options
| -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; |
