Esta es una secuela directa de Reacción en cadena (Parte #2), que era un caso particular más sencillo de este desafío (te sugiero intentar ese primero).
Al igual que en la parte anterior, recibirás un arreglo rectangular que representa un "mapa" con tres tipos de espacios:
El objetivo es sencillo: dado un mapa, devuelve la cantidad mínima de bombas que deben detonarse para que todas las bombas sean destruidas por la reacción en cadena.
Veamos algunos ejemplos:
[["+", "x"]]Para el mapa anterior, la respuesta es 1: para hacer explotar ambas bombas, se puede elegir la bomba '+'. Sin embargo, ten en cuenta que elegir la bomba 'x' no funciona.
[
["+", "0", "x"],
["x", "x", "x"]
]Para el mapa anterior, la respuesta es 2: se pueden elegir las dos bombas 'x' de la columna derecha o las bombas 'x' central y derecha de la fila inferior. No funcionará ninguna otra elección.
[
["x", "x", "x"],
["x", "+", "x"],
["x", "x", "x"]
]Para el mapa anterior, la respuesta es 4: elige las cuatro bombas 'x' de las esquinas. No funciona ninguna otra elección.
[
["x", "x", "+"],
["+", "0", "+"],
["+", "x", "x"]
]Para el mapa anterior, la respuesta es 1: funcionará cualquier bomba excepto las bombas "x" de la esquina superior izquierda y la esquina inferior derecha.
min_bombs_needed([
["+", "x"]
]) ➞ 1
min_bombs_needed([
["+", "0", "x"],
["x", "x", "x"]
]) ➞ 2
min_bombs_needed([
["x", "x", "x"],
["x", "+", "x"],
["x", "x", "x"]
]) ➞ 4
min_bombs_needed([
["x", "x", "+"],
["+", "0", "+"],
["+", "x", "x"]
]) ➞ 1