diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-01-14 12:17:47 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-14 12:17:47 +0000 |
| commit | 53668b050d994a10fdebda5fbafba13ce8f74bc5 (patch) | |
| tree | dee11ed8bdd8391039111a0861a56ffcc73ba8aa | |
| parent | 5af34cfd5f25c6fee95a82d0e10858cb860d4fe6 (diff) | |
| parent | dd4895f90e2ad2036d1ebe266acf9aa598b18d5b (diff) | |
| download | perlweeklychallenge-club-53668b050d994a10fdebda5fbafba13ce8f74bc5.tar.gz perlweeklychallenge-club-53668b050d994a10fdebda5fbafba13ce8f74bc5.tar.bz2 perlweeklychallenge-club-53668b050d994a10fdebda5fbafba13ce8f74bc5.zip | |
Merge pull request #9389 from wambash/challenge-week-251
Challenge week 251
| -rw-r--r-- | challenge-251/wambash/elixir/ch-2.exs | 70 | ||||
| -rw-r--r-- | challenge-251/wambash/raku/ch-1.raku | 21 | ||||
| -rwxr-xr-x | challenge-251/wambash/raku/ch-2.raku | 65 |
3 files changed, 156 insertions, 0 deletions
diff --git a/challenge-251/wambash/elixir/ch-2.exs b/challenge-251/wambash/elixir/ch-2.exs new file mode 100644 index 0000000000..9e934af65d --- /dev/null +++ b/challenge-251/wambash/elixir/ch-2.exs @@ -0,0 +1,70 @@ +defmodule LuckyNumber do + def lucky_number(matrix) do + mm = min_max(matrix) + if mm == max_min(matrix), do: mm, else: -1 + end + + def min_max(matrix) do + matrix + |> Stream.map(&Enum.min/1) + |> Enum.max() + end + + def max_min(matrix) do + matrix + |> Stream.zip_with(&Enum.max/1) + |> Enum.min() + end +end + +ExUnit.start() + +defmodule LuckyNumbersTest do + use ExUnit.Case + + test "matrix 3x3" do + matrix = [ + [3, 7, 8], + [9, 11, 13], + [15, 16, 17] + ] + + assert LuckyNumber.min_max(matrix) == 15 + assert LuckyNumber.max_min(matrix) == 15 + assert LuckyNumber.lucky_number(matrix) == 15 + end + + test "matrix 4x4" do + matrix = [ + [ 1, 10, 4, 2], + [ 9, 3, 8, 7], + [15, 16, 17, 12] + ] + + assert LuckyNumber.min_max(matrix) == 12 + assert LuckyNumber.max_min(matrix) == 12 + assert LuckyNumber.lucky_number(matrix) == 12 + end + + test "matrix 2x2" do + matrix = [ + [7, 8], + [1, 2] + ] + + assert LuckyNumber.min_max(matrix) == 7 + assert LuckyNumber.max_min(matrix) == 7 + assert LuckyNumber.lucky_number(matrix) == 7 + end + + test "matrix 2x2 withou lucky number" do + matrix = [ + [7, 2], + [1, 4] + ] + + assert LuckyNumber.min_max(matrix) == 2 + assert LuckyNumber.max_min(matrix) == 4 + assert LuckyNumber.lucky_number(matrix) == -1 + end +end 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 +} |
