adventjs-issues icon indicating copy to clipboard operation
adventjs-issues copied to clipboard

Reto #21 no evalua correctamente un objeto vacío {} (valida para 0 y para 1)

Open R4z0rX opened this issue 10 months ago • 0 comments

Al final de las intrucciones dice: "Un árbol vacío tiene una altura de 0." Por eso consideré que un objeto vacío {} debería devolver 0, al igual que un null. Para que eso se cumpla hice el siguiente código:

Spoiler warning: Click para ver el código
function treeHeight(tree) {
    let r = 0
    tree ??= {}
    
    if (Object.keys(tree).length != 0) {
        let leftHeight = treeHeight(tree.left)
        let rightHeight = treeHeight(tree.right)
        r = Math.max(leftHeight, rightHeight) + 1
    }
    return r
}

Con estos resultados:

console.log(treeHeight({}))
// Devuelve: 0
console.log(treeHeight(null))
// Devuelve: 0

La página del AdventJS me lo dio como válido con 5⭐. Pero entre las variaciones que hice también probé el siguiente código:

Spoiler warning: Click para ver el código
function treeHeight(tree) {
  if (!tree) return 0

  let leftHeight = treeHeight(tree.left)
  let rightHeight = treeHeight(tree.right)

  return Math.max(leftHeight, rightHeight) + 1
}

Con estos resultados:

console.log(treeHeight({}))
// Devuelve: 1
console.log(treeHeight(null))
// Devuelve: 0

Y la página del AdventJS también me lo dio como válido con 5⭐.

Uno de los 2 debería estar mal, y a mi parecer sería el segundo.

Salu2!

R4z0rX avatar Dec 22 '24 04:12 R4z0rX