aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Krňávek <Jan.Krnavek@gmail.com>2024-01-14 11:53:51 +0100
committerJan Krňávek <Jan.Krnavek@gmail.com>2024-01-14 11:54:47 +0100
commitdd4895f90e2ad2036d1ebe266acf9aa598b18d5b (patch)
tree47279b1ffe6dcc9b715c89bc0eb6da934e8cd7d1
parent14c0f14820618e7e0a5d818bdab95634fc0c0ab0 (diff)
downloadperlweeklychallenge-club-dd4895f90e2ad2036d1ebe266acf9aa598b18d5b.tar.gz
perlweeklychallenge-club-dd4895f90e2ad2036d1ebe266acf9aa598b18d5b.tar.bz2
perlweeklychallenge-club-dd4895f90e2ad2036d1ebe266acf9aa598b18d5b.zip
solution week 251-2 -- Elixir
-rw-r--r--challenge-251/wambash/elixir/ch-2.exs70
1 files changed, 70 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