aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-01-14 12:17:47 +0000
committerGitHub <noreply@github.com>2024-01-14 12:17:47 +0000
commit53668b050d994a10fdebda5fbafba13ce8f74bc5 (patch)
treedee11ed8bdd8391039111a0861a56ffcc73ba8aa
parent5af34cfd5f25c6fee95a82d0e10858cb860d4fe6 (diff)
parentdd4895f90e2ad2036d1ebe266acf9aa598b18d5b (diff)
downloadperlweeklychallenge-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.exs70
-rw-r--r--challenge-251/wambash/raku/ch-1.raku21
-rwxr-xr-xchallenge-251/wambash/raku/ch-2.raku65
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
+}