-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmoveTrain.js
51 lines (41 loc) · 1.27 KB
/
moveTrain.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const board = ['·····', '*····', '@····', 'o····', 'o····']
export function moveTrain(board, mov) {
const directions = {
U: [-1, 0], // Arriba
D: [1, 0], // Abajo
L: [0, -1], // Izquierda
R: [0, 1], // Derecha
}
let startRow, startCol
for (let i = 0; i < board.length; i++) {
const col = board[i].indexOf('@')
if (col !== -1) {
startRow = i
startCol = col
break
}
}
const [rowOffset, colOffset] = directions[mov]
const newRow = startRow + rowOffset
const newCol = startCol + colOffset
if (newRow < 0 || newRow >= board.length) {
return 'crash'
}
const targetCell = board[newRow][newCol]
if (targetCell === '*') return 'eat'
if (targetCell === 'o') return 'crash'
if (targetCell === '.') return 'none'
return 'none'
}
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