Skip to content

Latest commit

 

History

History
88 lines (66 loc) · 2.19 KB

15.md

File metadata and controls

88 lines (66 loc) · 2.19 KB

⬅️ Regresar

15 - Decorando el árbol de Navidad

Una pareja está poniendo el árbol de navidad. El chico es un motivado de los adornos navideños y quiere que quede perfectamente equilibrado. Tiene tres tipos de decoraciones:

  • Bolas de colores : B
  • Regalos pequeños : R
  • Piñas de pino : P

El árbol de navidad es un triángulo que hay que generar. Ya tienen la base montada, que sería la primera fila, y a partir de ahí tienen que ir colocando las decoraciones hacía arriba siguiendo una fórmula.

Arriba coloca  :     P     R     B     P
Si abajo tiene :    P P   B P   R P   B R

Las combinaciones también son al revés. Por ejemplo, si abajo es B P, arriba es R. Pero también será R si abajo es P B. También si abajo tienes dos veces la misma letra, arriba será la misma letra. Por ejemplo, si abajo es B B, arriba es B.

Con estas reglas, podríamos ver el árbol que generaríamos con la base B P R P:

   R
  P B
 R B B
B P R P

Escribe un programa que reciba el string B P R P y devuelva un array con la representación del árbol.

decorateTree('B P R P')
// [
// 'R',
// 'P B',
// 'R B B',
// 'B P R P'
// ]

decorateTree('B B') // ['B', 'B B']

Ten en cuenta que:

  • El programa recibe siempre la cadena de texto que representa la base del árbol.
  • Hay que generar el árbol completo, es decir, la base y las filas que se generan a partir de ella, hasta arriba.
  • Hay que seguir la fórmula para saber qué decoración colocar en cada posición.


Solución

function decorateTree (base) {
	const finalArray = [base]
	const combinations = {
		"BB": "B",
		"RR": "R",
		"PP": "P",
		"BP": "R",
		"BR": "P",
		"PB": "R",
		"PR": "B",
		"RB": "P",
		"RP": "B"
	}

	for (const i in base.split(' ').slice(1)) {
		const combinations = []
		const currentItem = finalArray[i].split(" ")
		for (const i in currentItem)
    combinations.push(currentItem[i - 1] + currentItem[i])

		const converted = []
		combinations.forEach(char => converted.push(combinations[char]))
		finalArray.push(converted.join(" ").trim())
	}

	return finalArray.reverse()
}

Puntaje: 80


⬅️ Regresar