Saltar al contenido

Los avisperos del vivero

Enunciado

Don Aurelio tiene el vivero repartido en cuadros parejos, y este año le salieron avisperos entre los planteles. Antes de mandar a alguien a regar, quiere el mapa anotado: en cada cuadro libre, cuántos avisperos lo tocan.

Escribe una función que reciba vivero, una lista de textos del mismo largo. Cada texto es un renglón de cuadros: * es un cuadro con avispero y un espacio es un cuadro libre. El vivero mide a lo más 12 renglones por 12 cuadros, y puede venir vacío o con renglones vacíos. Regresa una lista de textos nueva, del mismo tamaño. Los * se quedan donde están, y cada cuadro libre lleva la cifra de cuántos de los ocho cuadros de alrededor tienen avispero: los cuatro de los lados y los cuatro de las esquinas. Un cuadro libre que no tiene ningún avispero alrededor se queda en espacio, no en 0.

Con [" ", " * ", " "] el avispero del centro toca los ocho cuadros de alrededor, así que regresas ["111", "1*1", "111"]. Con ["* *"] el cuadro de en medio no toca ninguno y se queda en espacio: ["*1 1*"].

Ejemplos

  • El avispero del centro

    [" ", " * ", " "] → ["111", "1*1", "111"]

  • Un renglón con avisperos en las puntas

    ["* *"] → ["*1 1*"]

  • Un vivero sin avisperos

    [" ", " ", " "] → [" ", " ", " "]

  • Puro avispero

    ["***", "***", "***"] → ["***", "***", "***"]

  • Un cuadro libre rodeado de avisperos

    ["***", "* *", "***"] → ["***", "*8*", "***"]

  • Dos avisperos en el mismo renglón

    [" * * "] → ["1*2*1"]

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def marca_avisperos(vivero):
    pass

JavaScript

function marcaAvisperos(vivero) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n²)

Ver todos los retos →