Skip to content

Latest commit

 

History

History
81 lines (62 loc) · 1.47 KB

07.md

File metadata and controls

81 lines (62 loc) · 1.47 KB

⬅️ Regresar

Reto #7: 📦 Las cajas en 3D

Instrucciones

Santa está experimentando con nuevos diseños de regalos y necesita tu ayuda para visualizarlos en 3D.

Tu tarea es escribir una función que, dado un tamaño n (entero), genere un dibujo de un regalo en 3D utilizando caracteres ASCII.

Las líneas de los regalos se dibujan con # y las caras con el símbolo que nos pasan como parámetro:

drawGift(4, '+')

/*
   ####
  #++##
 #++#+#
####++#
#++#+#
#++##
####
*/

drawGift(5, '*')
/*
    #####
   #***##
  #***#*#
 #***#**#
#####***#
#***#**#
#***#*#
#***##
#####
*/

drawGift(1, '^')
/*
#
*/

[!IMPORTANT] Nos han dicho que siempre hay que dejar un salto de línea al final del dibujo.

Nota: Ten en cuenta que, en los tests, la primera línea se ve empujada por el caracter ".



Solución

function drawGift (size, symbol) {
	if (size < 2) return "#\n"
	let top = ""
	for (let i = 0; i < size; i++) {
		top += i === 0
			? " ".repeat(size - i - 1) + "#".repeat(size) + "\n"
			: " ".repeat(size - i - 1) + "#" + symbol.repeat(size - 2)
			+ "#" + symbol.repeat(i - 1) + "#" + "\n"
	}
	const center = "#".repeat(size) + symbol.repeat(size - 2) + "#"
	const bottom = top.split("\n").map(a => a.trimStart())
		.reverse().join("\n") + "\n"
	return top + center + bottom
}

Puntaje: 250


⬅️ Regresar