✨ Conversation 1: Found a valid implementation! 🎉 ✨
Chat trace of solutions by o3: passes all tests, and does NOT use unauthorized helper functions, so it solves the challenge! (cf. https://github.com/youqad/bit-reversal-trees)
Solution has been saved (on WandB weave) with Call ID: 019642d6-1889-7792-ada8-81be8701d7da 🚀
invert :: Tree a -> Tree a
invert t = invertHelper True t
where
invertHelper :: Bool -> Tree a -> Tree a
invertHelper True (Leaf x) = Leaf x
invertHelper True (Node l r) =
let l' = invertHelper True l
r' = invertHelper True r
in invertHelper False (Node l' r')
invertHelper False (Leaf x) = Leaf x
invertHelper False (Node a b) =
case (a, b) of
(Leaf _, Leaf _) -> Node a b
(Node a1 a2, Node b1 b2) ->
Node (invertHelper False (Node a1 b1))
(invertHelper False (Node a2 b2))
_ -> error "invert: non‑perfect tree encountered"