Tracks
/
jq
jq
/
Ejercicios
/
Campo de flores
Campo de flores

Campo de flores

Difícil

Introducción

Flower Field es una reinvención compasiva del popular juego Buscaminas. El objetivo del juego es encontrar todas las flores del jardín usando pistas numéricas que indican cuántas flores hay directamente adyacentes (en horizontal, en vertical o en diagonal) a una casilla. «Flower Field» se distribuyó en versiones regionales de Microsoft Windows en Italia, Alemania, Corea del Sur, Japón y Taiwán.

Instrucciones

Tu tarea es agregar el conteo de flores a las casillas vacías de un jardín de Campo de flores ya completado. El jardín en sí es un tablero rectangular compuesto por casillas que están vacías (' ') o tienen una flor ('*').

Para cada casilla vacía, cuenta cuántas flores tiene adyacentes (en horizontal, en vertical y en diagonal). Si la casilla vacía no tiene flores adyacentes, déjala vacía. De lo contrario, reemplázala por el conteo de flores adyacentes.

Por ejemplo, puedes recibir un tablero de 5 x 4 como este (aquí los espacios vacíos se representan con el carácter '·' para mostrarlos en pantalla):

·*·*·
··*··
··*··
·····

Que tu código debe transformar en esto:

1*3*1
13*31
·2*2·
·111·

Opciones adicionales de la línea de comandos de jq

Notarás opciones adicionales para jq en los tests.

run jq -s -R -c -f flower-field.jq << 'END_INPUT'

¿Qué son?

  • -s

    Este es el modo «slurp». En lugar de tratar la entrada como un flujo de objetos JSON, toda la entrada se absorbe en un solo array.

    $ seq 5 | jq -c '.'
    1
    2
    3
    4
    5
    $ seq 5 | jq -s -c '.'
    [1,2,3,4,5]
    
  • -R

    Es posible que ya hayas visto -r, que sirve para mostrar strings «raw» (sin comillas). Esta opción es lo contrario. Cada línea de la entrada se toma como un string.

    Dos ejemplos:

    $ seq 5 | jq -R -c .
    "1"
    "2"
    "3"
    "4"
    "5"
    
    $ echo 42 | jq '. * 2'      # input is a JSON number
    84
    $ echo 42 | jq -R '. * 2'   # input is a JSON string
    "4242"
    

Cuando combinas estas dos opciones, no obtienes un array de strings: obtienes toda la entrada como un único string, incluidos los saltos de línea al final de cada línea.

$ seq 5 | jq -s -R -c .
"1\n2\n3\n4\n5\n"

Manejar esto es parte del reto de este ejercicio.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
jq Exercism

¿Todo listo para empezar Campo de flores?

Regístrate en Exercism para aprender y dominar jq con 12 conceptos75 ejercicios y mentoría humana real, todo gratis.

¡Profundiza en Campo de flores!

Exploramos bucles for anidados, el uso ingenioso de min/max para simplificar la verificación de límites, las canalizaciones funcionales y el uso de matrices bidimensionales.