From e5e50b4786ab9a0a294e390b749d3268e6ef0134 Mon Sep 17 00:00:00 2001 From: varnie Date: Sat, 8 Feb 2025 14:09:59 +0300 Subject: [PATCH] challenge 65 - improvements --- lib/challenge65.ex | 14 ++++++++++++-- test/challenge65_test.exs | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/challenge65.ex b/lib/challenge65.ex index 7df1ea1..ff98128 100644 --- a/lib/challenge65.ex +++ b/lib/challenge65.ex @@ -12,11 +12,21 @@ defmodule Challenge65 do def layout_binary_tree(t, stepx \\ 10), do: layout_binary_tree_impl(t, stepx, 1, stepx / 2) defp layout_binary_tree_impl(t, rootx, rooty, coeff) do + format_val = fn val -> + truncated_val = trunc(val) + + if val - truncated_val == 0 do + truncated_val + else + val + end + end + if TreeNode.is_leaf(t) do - "(#{t.symbol} #{rootx} #{rooty} nil nil)" + "(#{t.symbol} #{format_val.(rootx)} #{rooty} nil nil)" else "(" <> - "#{t.symbol} #{rootx} #{rooty}" <> + "#{t.symbol} #{format_val.(rootx)} #{rooty}" <> if is_nil(t.left) do " nil" else diff --git a/test/challenge65_test.exs b/test/challenge65_test.exs index 7ee3946..c1480f6 100644 --- a/test/challenge65_test.exs +++ b/test/challenge65_test.exs @@ -9,19 +9,19 @@ defmodule Challenge65Test do symbol: "a", left: %TreeNode{symbol: "l"}, right: nil - }) == "(a 10 1 (l 5.0 2 nil nil) nil)" + }) == "(a 10 1 (l 5 2 nil nil) nil)" assert Challenge65.layout_binary_tree(%TreeNode{ symbol: "a", right: %TreeNode{symbol: "r"}, left: nil - }) == "(a 10 1 nil (r 15.0 2 nil nil))" + }) == "(a 10 1 nil (r 15 2 nil nil))" assert Challenge65.layout_binary_tree(%TreeNode{ symbol: "a", left: %TreeNode{symbol: "l"}, right: %TreeNode{symbol: "r"} - }) == "(a 10 1 (l 5.0 2 nil nil) (r 15.0 2 nil nil))" + }) == "(a 10 1 (l 5 2 nil nil) (r 15 2 nil nil))" t = %TreeNode{ symbol: "a", @@ -46,6 +46,6 @@ defmodule Challenge65Test do } assert Challenge65.layout_binary_tree(t) == - "(a 10 1 (b 5.0 2 (d 2.5 3 nil nil) (e 7.5 3 nil nil)) (c 15.0 2 nil (f 17.5 3 (g 16.25 4 nil nil) nil)))" + "(a 10 1 (b 5 2 (d 2.5 3 nil nil) (e 7.5 3 nil nil)) (c 15 2 nil (f 17.5 3 (g 16.25 4 nil nil) nil)))" end end