-
Notifications
You must be signed in to change notification settings - Fork 0
/
day-25.js
48 lines (39 loc) · 1.93 KB
/
day-25.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
/*
Ayer, en noche buena, una família cenó por todo lo alto... Con tanta copa 🍾 encima todavía no han retirado los platos y la comida de ayer...
Un ratoncillo llamado midurat 🐭, que vió ayer el festín escondido, está relamiéndose los bigotes al ver todos los manjares que hay en el comedor.
Eso sí, hay que tener cuidado 😶 y sólo hacer los movimientos correctos para comer algo. Por eso, el ratón, que se ha visto los vídeos de midudev, va a crear una función para saber si su próximo movimiento es correcto o no ✅.
El ratoncillo se puede mover en 4 direcciones: up, down, left, right y el comedor es una matriz (un array de arrays) donde cada posición puede ser:
Un espacio vacío es que no hay nada
Una m es el ratón
Un * es la comida
Vamos a ver unos ejemplos:
const room = [
[' ', ' ', ' '],
[' ', ' ', 'm'],
[' ', ' ', '*']
]
canMouseEat('up', room) // false
canMouseEat('down', room) // true
canMouseEat('right', room) // false
canMouseEat('left', room) // false
const room2 = [
['*', ' ', ' ', ' '],
[' ', 'm', '*', ' '],
[' ', ' ', ' ', ' '],
[' ', ' ', ' ', '*']
]
canMouseEat('up', room2) // false
canMouseEat('down', room2) // false
canMouseEat('right', room2) // true
canMouseEat('left', room2) // false
¡Ten en cuenta que el ratón quiere buscar comida en diferentes habitaciones y que cada una puede tener dimensiones diferentes!
*/
export default function canMouseEat(direction, game) {
const rowLength = game.at(0).length
const flattened = game.flat()
const mouseIndex = flattened.indexOf('m')
return direction === 'up' && flattened[mouseIndex - rowLength] === '*'
|| direction === 'down' && flattened[mouseIndex + rowLength] === '*'
|| direction === 'left' && flattened[mouseIndex - 1] === '*'
|| direction === 'right' && flattened[mouseIndex + 1] === '*'
}