DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Advent.js🎅🏼| #4: ¡Es hora de poner la navidad en casa!

¡Es hora de poner la navidad en casa!

¡Es hora de poner el árbol de navidad en casa! 🎄

Para ello vamos a crear una función que recibe la altura del árbol, que será un entero positivo del 1 a, como máximo, 100.

Si le pasamos el argumento 5, se pintaría esto:

____*____
___***___
__*****__
_*******_
*********
____#____
____#____
Enter fullscreen mode Exit fullscreen mode

Creamos un triángulo de asteríscos * con la altura proporcionada y, a los lados, usamos el guión bajo _ para los espacios. Es muy importante que nuestro árbol siempre tenga la misma longitud por cada lado.
Todos los árboles, por pequeños o grandes que sean, tienen un tronco de dos líneas de #.

Otro ejemplo con un árbol de altura 3:

__*__
_***_
*****
__#__
__#__
Enter fullscreen mode Exit fullscreen mode

Ten en cuenta que el árbol es un string y necesitas los saltos de línea \n para cada línea para que se forme bien el árbol.

Completa el reto!


Mi solución:


Puedes seguir a @midudev y estar pendiente de los retos de Advent.js

Discussion (1)

Collapse
kylety1990 profile image
kylety1990

function createTree(number){
let tree = '';
let counter = 1;
const objTree = {
background : '_',
branch : '*',
trunk : '#',
}
const {background, branch, trunk} = objTree;
const data = Array.from(Array(number).keys()).reverse();

data.map(el=>{
     tree += file(branch, background, el,  counter);
     counter += 2;
})
Enter fullscreen mode Exit fullscreen mode

tree += file(trunk, background, data.length -1 , 1);
tree += file(trunk, background, data.length -1, 1);
return tree
}

function file(branch, background, number, counter){
return ${background.repeat(number)}${branch.repeat(counter)}${background.repeat(number)}\n

}

console.log(createTree(10))