diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-04-30 23:22:10 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-30 23:22:10 +0100 |
| commit | 361820eafe6d760eaed0092e9973925bef10c665 (patch) | |
| tree | 02a4e9a7c0907bd78533f789355fd42acb24ce57 | |
| parent | 8af4e17dc115ce2e7a19f8fa11e70c799d2f6fb9 (diff) | |
| parent | 62a695a268718828f23f435828de9ed9db437884 (diff) | |
| download | perlweeklychallenge-club-361820eafe6d760eaed0092e9973925bef10c665.tar.gz perlweeklychallenge-club-361820eafe6d760eaed0092e9973925bef10c665.tar.bz2 perlweeklychallenge-club-361820eafe6d760eaed0092e9973925bef10c665.zip | |
Merge pull request #10007 from andemark/challenge-267
Challenge 267 Solutions (Raku)
| -rw-r--r-- | challenge-267/mark-anderson/raku/ch-1.raku | 16 | ||||
| -rw-r--r-- | challenge-267/mark-anderson/raku/ch-2.raku | 23 |
2 files changed, 39 insertions, 0 deletions
diff --git a/challenge-267/mark-anderson/raku/ch-1.raku b/challenge-267/mark-anderson/raku/ch-1.raku new file mode 100644 index 0000000000..f2c7107d7a --- /dev/null +++ b/challenge-267/mark-anderson/raku/ch-1.raku @@ -0,0 +1,16 @@ +#!/usr/bin/env raku +use Test; + +is product-sign(-1,-2,-3,-4,3,2,1), 1; +is product-sign(1,2,0,-2,-1), 0; +is product-sign(-1,-1,1,-1,2), -1; +is product-sign(1,2,3), 1; + +sub product-sign(*@ints) +{ + my %sign is Map = @ints.classify(*.sign); + + return 0 if %sign{0}; + return 1 unless %sign{-1}; + return +(%sign{-1} %% 2) || -1 +} diff --git a/challenge-267/mark-anderson/raku/ch-2.raku b/challenge-267/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..43f6e1e722 --- /dev/null +++ b/challenge-267/mark-anderson/raku/ch-2.raku @@ -0,0 +1,23 @@ +#!/usr/bin/env raku +use Test; + +is-deeply line-counts(([~] "a".."z"), 10 xx 26), ( 3, 60); +is-deeply line-counts("bbbcccdddaaa", flat 4, 10 xx 25), ( 2, 4); +is-deeply line-counts(([~] "a".."z"), 1 xx 26), ( 1, 26); +is-deeply line-counts(([~] "a".."z"), 100 xx 26), ( 26, 100); +is-deeply line-counts("theweeklychallenge" x 267, 1..26), (534, 92); + +sub line-counts($str, @widths) +{ + my @str = $str.comb; + + my %m is Map = "a".."z" Z=> @widths; + + my @lines = do while @str + { + my $k = ([\+] %m{@str}).first(* > 100, :k) // @str.elems; + @str.splice(0, $k) + } + + @lines.elems, [+] %m{|@lines.tail} +} |
