Skip to content

Latest commit

 

History

History
85 lines (64 loc) · 1.65 KB

17.md

File metadata and controls

85 lines (64 loc) · 1.65 KB

⬅️ Regresar

Reto #17: 💣 Busca las bombas del Grinch

Instrucciones

El Grinch ha estado haciendo de las suyas en el Polo Norte y ha sembrado bombas de carbón explosivo 💣 en la fábrica de juguetes de los duendes. Quiere que todos los juguetes queden inutilizados y por eso ha dejado una cuadrícula donde algunas celdas tienen carbón explosivo (true) y otras están vacías (false).

Los duendes necesitan tu ayuda para mapear las zonas peligrosas. Cada celda vacía debe mostrar un número que indique cuántas bombas de carbón explosivo hay en las posiciones adyacentes, incluidas las diagonales.

detectBombs([
  [true, false, false],
  [false, true, false],
  [false, false, false]
])
// [
//   [1, 2, 1],
//   [2, 1, 1],
//   [1, 1, 1]
// ]

detectBombs([
  [true, false],
  [false, false]
])
// [
//   [0, 1],
//   [1, 1]
// ]

detectBombs([
  [true, true],
  [false, false],
  [true, true]
])

// [
//   [1, 1],
//   [4, 4],
//   [1, 1]
// ]

Nota: ¿Quieres una pista? Seguro que has jugado al juego de buscaminas antes… 😉


Solución

function detectBombs(grid) {
	const pos = (y, x) => {
		return [
			grid[y - 1]?.[x],
			grid[y - 1]?.[x + 1],
			grid[y - 1]?.[x - 1],
			grid[y + 1]?.[x],
			grid[y + 1]?.[x + 1],
			grid[y + 1]?.[x - 1],
			grid[y]?.[x - 1],
			grid[y]?.[x + 1],
		]
	}

	return grid.map((row, y) => row.map((bomb, x) =>
  pos(y, x).reduce((acc, pos) => acc + (pos ? 1 : 0), 0)))
}

Puntaje: 🌟🌟🌟🌟🌟

1562 ops/s

Complejidad cognitiva: 7


⬅️ Regresar