diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2023-11-12 23:36:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-12 23:36:47 +0000 |
| commit | 27b8f17082740a5cc74833690219e8d651b535b7 (patch) | |
| tree | 481e8e337011ea58fb35f71cb0c504389f26f526 | |
| parent | 3cd69c12f652f3d2a71126508b4cf8d1c6f6e535 (diff) | |
| parent | cecfd0c9af5b623a2bd6eba2c83f15cac6034ac4 (diff) | |
| download | perlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.tar.gz perlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.tar.bz2 perlweeklychallenge-club-27b8f17082740a5cc74833690219e8d651b535b7.zip | |
Merge pull request #9047 from arnesom/branch-for-challenge-242
Arne Sommer
| -rw-r--r-- | challenge-242/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-242/arne-sommer/raku/ch-1.raku | 18 | ||||
| -rwxr-xr-x | challenge-242/arne-sommer/raku/ch-2.raku | 24 | ||||
| -rwxr-xr-x | challenge-242/arne-sommer/raku/flip-matrix | 24 | ||||
| -rwxr-xr-x | challenge-242/arne-sommer/raku/missing-members | 18 |
5 files changed, 85 insertions, 0 deletions
diff --git a/challenge-242/arne-sommer/blog.txt b/challenge-242/arne-sommer/blog.txt new file mode 100644 index 0000000000..9ccddc4ef7 --- /dev/null +++ b/challenge-242/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/missing-matrix.html diff --git a/challenge-242/arne-sommer/raku/ch-1.raku b/challenge-242/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..d69dab06a8 --- /dev/null +++ b/challenge-242/arne-sommer/raku/ch-1.raku @@ -0,0 +1,18 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str $arr1, $arr2); + +my @arr1 = $arr1.words>>.Int; +my @arr2 = $arr2.words>>.Int; + +die "@arr1: Must be integers only" unless all(@arr1) ~~ Int; +die "@arr2: Must be integers only" unless all(@arr2) ~~ Int; + +my @missing2 = (@arr1 (-) @arr2).keys.sort; +my @missing1 = (@arr2 (-) @arr1).keys.sort; + +print "("; +print "[{ @missing2.join(", ") }]" if @missing2.elems; +print ", " if @missing2.elems && @missing1.elems; +print "[{ @missing1.join(", ") }]" if @missing1.elems; +say ")"; diff --git a/challenge-242/arne-sommer/raku/ch-2.raku b/challenge-242/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..6a9e9c8cde --- /dev/null +++ b/challenge-242/arne-sommer/raku/ch-2.raku @@ -0,0 +1,24 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str $matrix = "1 1 0 | 1 0 1 | 0 0 0", :v(:$verbose)); + +my @matrix = $matrix.split("|")>>.words>>.Array; +my @rows = @matrix>>.elems; + +die "Must have at least 1 row" unless @rows.elems >= 1; +die "The rows must have the same size" unless [==] @rows; +die "Must contain 0 and 1 only" unless all(@matrix[*;*]) eq any(0,1); +die "Must have the same number of columns and rows" unless @rows.elems == @rows[0]; + +my @reverse = @matrix>>.Int>>.reverse>>.Array; +my @inverted = @reverse>>.&invert; + +say ": Matrix: { @matrix.raku }" if $verbose; +say ": Reverse: { @reverse.raku }" if $verbose; + +say @inverted.List.raku; + +multi sub invert (*@bool) +{ + return |@bool.map( + ! * ).Array; +} diff --git a/challenge-242/arne-sommer/raku/flip-matrix b/challenge-242/arne-sommer/raku/flip-matrix new file mode 100755 index 0000000000..6a9e9c8cde --- /dev/null +++ b/challenge-242/arne-sommer/raku/flip-matrix @@ -0,0 +1,24 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str $matrix = "1 1 0 | 1 0 1 | 0 0 0", :v(:$verbose)); + +my @matrix = $matrix.split("|")>>.words>>.Array; +my @rows = @matrix>>.elems; + +die "Must have at least 1 row" unless @rows.elems >= 1; +die "The rows must have the same size" unless [==] @rows; +die "Must contain 0 and 1 only" unless all(@matrix[*;*]) eq any(0,1); +die "Must have the same number of columns and rows" unless @rows.elems == @rows[0]; + +my @reverse = @matrix>>.Int>>.reverse>>.Array; +my @inverted = @reverse>>.&invert; + +say ": Matrix: { @matrix.raku }" if $verbose; +say ": Reverse: { @reverse.raku }" if $verbose; + +say @inverted.List.raku; + +multi sub invert (*@bool) +{ + return |@bool.map( + ! * ).Array; +} diff --git a/challenge-242/arne-sommer/raku/missing-members b/challenge-242/arne-sommer/raku/missing-members new file mode 100755 index 0000000000..d69dab06a8 --- /dev/null +++ b/challenge-242/arne-sommer/raku/missing-members @@ -0,0 +1,18 @@ +#! /usr/bin/env raku + +unit sub MAIN (Str $arr1, $arr2); + +my @arr1 = $arr1.words>>.Int; +my @arr2 = $arr2.words>>.Int; + +die "@arr1: Must be integers only" unless all(@arr1) ~~ Int; +die "@arr2: Must be integers only" unless all(@arr2) ~~ Int; + +my @missing2 = (@arr1 (-) @arr2).keys.sort; +my @missing1 = (@arr2 (-) @arr1).keys.sort; + +print "("; +print "[{ @missing2.join(", ") }]" if @missing2.elems; +print ", " if @missing2.elems && @missing1.elems; +print "[{ @missing1.join(", ") }]" if @missing1.elems; +say ")"; |
