diff options
| author | Arne Sommer <arne@bbop.org> | 2025-10-23 18:07:16 +0200 |
|---|---|---|
| committer | Arne Sommer <arne@bbop.org> | 2025-10-23 18:07:16 +0200 |
| commit | 43e493797be4cfd9f72aad485e7453e5b9d4184d (patch) | |
| tree | c05d2d2589f73379788ec1cd8b27d4fbab7e4eaf | |
| parent | d8e57eefcd96f5eaa99352e269338c82bd357c9d (diff) | |
| download | perlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.tar.gz perlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.tar.bz2 perlweeklychallenge-club-43e493797be4cfd9f72aad485e7453e5b9d4184d.zip | |
week 344 Arne Sommer
| -rw-r--r-- | challenge-344/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-344/arne-sommer/raku/array-form-compute | 8 | ||||
| -rwxr-xr-x | challenge-344/arne-sommer/raku/array-formation | 25 | ||||
| -rwxr-xr-x | challenge-344/arne-sommer/raku/ch-1.raku | 8 | ||||
| -rwxr-xr-x | challenge-344/arne-sommer/raku/ch-2.raku | 25 |
5 files changed, 67 insertions, 0 deletions
diff --git a/challenge-344/arne-sommer/blog.txt b/challenge-344/arne-sommer/blog.txt new file mode 100644 index 0000000000..9b4218a09b --- /dev/null +++ b/challenge-344/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/form-formation.html
\ No newline at end of file diff --git a/challenge-344/arne-sommer/raku/array-form-compute b/challenge-344/arne-sommer/raku/array-form-compute new file mode 100755 index 0000000000..9720603414 --- /dev/null +++ b/challenge-344/arne-sommer/raku/array-form-compute @@ -0,0 +1,8 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int :$x, + *@ints where @ints.elems > 0 + && all(@ints) ~~ /^<[0..9]>$/); + +say "({ (@ints.join + $x).comb.join(", ") })"; + diff --git a/challenge-344/arne-sommer/raku/array-formation b/challenge-344/arne-sommer/raku/array-formation new file mode 100755 index 0000000000..28e2da4101 --- /dev/null +++ b/challenge-344/arne-sommer/raku/array-formation @@ -0,0 +1,25 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@rows where @rows.elems > 0 + && all(@rows) ~~ /^ <[0..9,]>+ $/, + :t(:$target) where $target ~~ /^ <[0..9,]>+ $/, + :v(:$verbose)); + +my @source = @rows>>.split(',')>>.Int; +my @target = $target.split(',')>>.Int; + +for @source.permutations -> @combo +{ + my @flat = @combo[*;*]; + my $equal = @flat eqv @target; + + say ": ({ @combo.map({ "[{ $_.join(",")}]" }).join(", ") }) eq ({ @target.join(",") }): { $equal }" if $verbose; + + if $equal + { + say 'true'; + exit; + } +} + +say 'false'; diff --git a/challenge-344/arne-sommer/raku/ch-1.raku b/challenge-344/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..9720603414 --- /dev/null +++ b/challenge-344/arne-sommer/raku/ch-1.raku @@ -0,0 +1,8 @@ +#! /usr/bin/env raku + +unit sub MAIN (Int :$x, + *@ints where @ints.elems > 0 + && all(@ints) ~~ /^<[0..9]>$/); + +say "({ (@ints.join + $x).comb.join(", ") })"; + diff --git a/challenge-344/arne-sommer/raku/ch-2.raku b/challenge-344/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..28e2da4101 --- /dev/null +++ b/challenge-344/arne-sommer/raku/ch-2.raku @@ -0,0 +1,25 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@rows where @rows.elems > 0 + && all(@rows) ~~ /^ <[0..9,]>+ $/, + :t(:$target) where $target ~~ /^ <[0..9,]>+ $/, + :v(:$verbose)); + +my @source = @rows>>.split(',')>>.Int; +my @target = $target.split(',')>>.Int; + +for @source.permutations -> @combo +{ + my @flat = @combo[*;*]; + my $equal = @flat eqv @target; + + say ": ({ @combo.map({ "[{ $_.join(",")}]" }).join(", ") }) eq ({ @target.join(",") }): { $equal }" if $verbose; + + if $equal + { + say 'true'; + exit; + } +} + +say 'false'; |
