Skip to content

Latest commit

 

History

History
89 lines (63 loc) · 2.11 KB

09.md

File metadata and controls

89 lines (63 loc) · 2.11 KB

⬅️ Regresar

Reto #9: 🚂 El tren mágico

Instrucciones

Los elfos están jugando con un tren 🚂 mágico que transporta regalos. Este tren se mueve en un tablero representado por un array de strings.

El tren está compuesto por una locomotora (@), seguida de sus vagones (o), y debe recoger frutas mágicas (*) que le sirve de combustible. El movimiento del tren sigue las siguientes reglas:

Recibirás dos parámetros board y mov.

board es un array de strings que representa el tablero:

@ es la locomotora del tren. o son los vagones del tren.

  • es una fruta mágica. · son espacios vacíos. mov es un string que indica el próximo movimiento del tren desde la cabeza del tren @:

'L': izquierda 'R': derecha 'U': arriba 'D': abajo. Con esta información, debes devolver una cadena de texto:

'crash': Si el tren choca contra los bordes del tablero o contra sí mismo. 'eat': Si el tren recoge una fruta mágica (*). 'none': Si avanza sin chocar ni recoger ninguna fruta mágica. Ejemplo:

const board = ['·····', '*····', '@····', 'o····', 'o····']

console.log(moveTrain(board, 'U'))
// ➞ 'eat'
// Porque el tren se mueve hacia arriba y encuentra una fruta mágica

console.log(moveTrain(board, 'D'))
// ➞ 'crash'
// El tren se mueve hacia abajo y la cabeza se choca consigo mismo

console.log(moveTrain(board, 'L'))
// ➞ 'crash'
// El tren se mueve a la izquierda y se choca contra la pared

console.log(moveTrain(board, 'R'))
// ➞ 'none'
// El tren se mueve hacia derecha y hay un espacio vacío en la derecha

Solución

function moveTrain(board, mov) {
	const y = board.findIndex(b => b.includes("@"))
	const x = board[y]?.indexOf("@")

	const positions = {
		"U": board[y - 1]?.[x],
		"R": board[y]?.[x + 1],
		"D": board[y + 1]?.[x],
		"L": board[y]?.[x - 1]
	}

	const info = {
		"*": "eat",
		"·": "none"
	}

	return info[positions[mov]] ?? "crash"
}

Puntaje: 🌟🌟🌟🌟🌟

2320 ops/s

Complejidad cognitiva: 3


⬅️ Regresar