From f87ab31f6eabf7023683c882cdb76177bbc8f957 Mon Sep 17 00:00:00 2001 From: varnie Date: Wed, 26 Feb 2025 21:21:15 +0300 Subject: [PATCH] updates --- lib/challenge46.ex | 7 ++++--- test/challenge46_test.exs | 18 ++++-------------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/lib/challenge46.ex b/lib/challenge46.ex index b65e7dd..8b97d10 100644 --- a/lib/challenge46.ex +++ b/lib/challenge46.ex @@ -8,9 +8,10 @@ defmodule Challenge46 do A logical expression in two variables can then be written as in the following example: and(or(A,B),nand(A,B)). Now, write a predicate table/3 which prints the truth table of a given logical expression in two variables. """ - def table(a, b, expr_fn) do - result = expr_fn.(a, b) - "#{a} #{b} #{result}" + def table(input_fn) do + for a <- [true, false], + b <- [true, false], + do: "#{a} #{b} #{input_fn.(a, b)}" end def tbl_impl(a, b) do diff --git a/test/challenge46_test.exs b/test/challenge46_test.exs index 1d7c9e6..564a07b 100644 --- a/test/challenge46_test.exs +++ b/test/challenge46_test.exs @@ -2,20 +2,10 @@ defmodule Challenge46Test do use ExUnit.Case test "table" do - assert Challenge46.table(false, true, &Challenge46.tbl_and(&1, Challenge46.tbl_or(&1, !&2))) == - "false true false" + assert Challenge46.table(fn a, b -> Challenge46.tbl_and(a, Challenge46.tbl_or(a, b)) end) == + ["true true true", "true false true", "false true false", "false false false"] - assert Challenge46.table(true, true, &Challenge46.tbl_and(&1, &2)) == "true true true" - assert Challenge46.table(true, true, &Challenge46.tbl_and/2) == "true true true" - - assert Challenge46.table(false, true, &Challenge46.tbl_and(Challenge46.tbl_or(&1, &2), &1)) == - "false true false" - - assert Challenge46.table(true, false, &Challenge46.tbl_and(Challenge46.tbl_or(&1, &2), &1)) == - "true false true" - - assert Challenge46.table(true, false, fn a, b -> - Challenge46.tbl_and(Challenge46.tbl_or(a, b), a) - end) == "true false true" + assert Challenge46.table(fn a, b -> Challenge46.tbl_or(a, b) end) == + ["true true true", "true false true", "false true true", "false false false"] end end