Skip to content

Commit

Permalink
challenge 65 - improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
varnie committed Feb 8, 2025
1 parent 9361350 commit e5e50b4
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
14 changes: 12 additions & 2 deletions lib/challenge65.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions test/challenge65_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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

0 comments on commit e5e50b4

Please sign in to comment.