diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2024-01-14 11:53:09 +0100 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2024-01-14 11:53:09 +0100 |
| commit | 14c0f14820618e7e0a5d818bdab95634fc0c0ab0 (patch) | |
| tree | 493528b6b4b64ae1b68446721676a6c4315cb263 | |
| parent | 79d998610e173291a715b36786ce87d7650de7b5 (diff) | |
| download | perlweeklychallenge-club-14c0f14820618e7e0a5d818bdab95634fc0c0ab0.tar.gz perlweeklychallenge-club-14c0f14820618e7e0a5d818bdab95634fc0c0ab0.tar.bz2 perlweeklychallenge-club-14c0f14820618e7e0a5d818bdab95634fc0c0ab0.zip | |
solutions week 251
| -rw-r--r-- | challenge-251/wambash/raku/ch-1.raku | 21 | ||||
| -rwxr-xr-x | challenge-251/wambash/raku/ch-2.raku | 65 |
2 files changed, 86 insertions, 0 deletions
diff --git a/challenge-251/wambash/raku/ch-1.raku b/challenge-251/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..2ef3d5dbf2 --- /dev/null +++ b/challenge-251/wambash/raku/ch-1.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku + +sub concatenation-value (+@ints) { + my ($is-odd, $hl) = @ints.elems.polymod: 2 ; + + @ints + andthen .head($hl) Z~ .reverse + andthen .sum + ($is-odd && @ints[$hl]) +} + +multi MAIN (Bool :test($)!) { + use Test; + is concatenation-value( 1, 2, 10), 112; + is concatenation-value( 6, 12, 25, 1), 1286; + is concatenation-value(10, 7, 31, 5, 2, 2), 489; + done-testing; +} + +multi MAIN (*@ints) { + say concatenation-value @ints +} diff --git a/challenge-251/wambash/raku/ch-2.raku b/challenge-251/wambash/raku/ch-2.raku new file mode 100755 index 0000000000..2f8c9c2be7 --- /dev/null +++ b/challenge-251/wambash/raku/ch-2.raku @@ -0,0 +1,65 @@ +#!/usr/bin/env raku + +sub min-max (+matrix) { + matrix + andthen .map: *.min + andthen .max +} + +sub max-min (+matrix) { + matrix + andthen [Zmax] $_ + andthen .min +} + +sub lucky-number (+@matrix) { + my $mm = min-max( @matrix); + $mm == max-min(@matrix) ?? $mm !! -1 +} + +multi MAIN (Bool :test($)!) { + use Test; + subtest 'matrix 3x3' ,{ + my @matrix := ( + 3, 7, 8; + 9,11,13; + 15,16,17; + ); + is min-max(@matrix), 15; + is max-min(@matrix), 15; + is lucky-number(@matrix),15; + } + subtest 'matrix 3x4' ,{ + my @matrix := ( + 1, 10, 4, 2; + 9, 3, 8, 7; + 15, 16, 17, 12; + ); + is min-max(@matrix), 12; + is max-min(@matrix), 12; + is lucky-number(@matrix),12; + } + subtest 'matrix 2x2' ,{ + my @matrix := ( + 7, 8; + 1, 2; + ); + is min-max(@matrix), 7; + is max-min(@matrix), 7; + is lucky-number(@matrix),7; + } + subtest 'matrix 2x2 without lucky number' ,{ + my @matrix := ( + 7, 2; + 1, 4; + ); + is min-max(@matrix), 2; + is max-min(@matrix), 4; + is lucky-number(@matrix),-1; + } + done-testing; +} + +multi MAIN (+matrix) { + say lucky-number matrix.map: *.split(',').cache +} |
