Skip to content

Latest commit

History

History
47 lines (32 loc) 路 1.8 KB

File metadata and controls

47 lines (32 loc) 路 1.8 KB

猬咃笍 Regresar

15 - El salto perfecto

隆Estamos haciendo los 煤ltimos ajustes para el trineo de Santa Claus!

Como ya sabes, el trineo es volador y estamos ajustando el motor para que haga parabolas lo m谩s 贸ptimas posibles. Para esto el salto debe ser siempre hacia arriba y, a partir del punto m谩s alto, debe bajar siempre hacia abajo...

Nuestro mec谩nico de confianza, Kiko Belfs, que tiene un Tesla genial, nos ha explicado que los saltos se pueden ver como arrays... y que s贸lo tenemos que asegurarnos que los n煤meros suben y bajan de forma correcta. Tambi茅n nos avisa que s贸lo pasaremos arrays de, como m铆nimo, tres posiciones.

Nos ha pasado algunos ejemplos de c贸mo deber铆a ser nuestra funci贸n y algunos resultados:

checkSledJump([1, 2, 3, 2, 1]) // true: sube y baja de forma estricta
checkSledJump([0, 1, 0]) // -> true: sube y baja de forma estricta
checkSledJump([0, 3, 2, 1]) // -> true: sube y baja de forma estricta
checkSledJump([0, 1000, 1]) // -> true: sube y baja de forma estricta

checkSledJump([2, 4, 4, 6, 2]) // false: no sube de forma estricta
checkSledJump([1, 2, 3]) // false: s贸lo sube
checkSledJump([1, 2, 3, 2, 1, 2, 3]) // false: sube y baja y sube... 隆no vale!

Lo importante: recorrer el array de izquierda a derecha para ver que la subida es siempre estricta, detectar el punto m谩s alto y entonces ver que la bajada es estricta hacia abajo...



Soluci贸n

export default function checkSledJump(heights) {
	let isDown = false

	for (let i = 0; i < heights.length - 1; i++) {
		if (heights[i] > heights[i + 1]) isDown = true
		if (isDown && heights[i] < heights[i + 1]) return false
		if (heights[i] === heights[i + 1]) return false
	}

	return isDown
}

猬咃笍 Regresar