Flower Field es una reinterpretación compasiva del popular juego Buscaminas. El objetivo del juego es encontrar todas las flores del jardín con la ayuda de 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.
Tu tarea consiste en añadir el recuento 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 o bien están vacías (' ') o bien contienen una flor ('*').
Para cada casilla vacía, cuenta el número de flores adyacentes (en horizontal, en vertical y en diagonal). Si la casilla vacía no tiene flores adyacentes, déjala vacía. En caso contrario, sustitúyela por el número de flores adyacentes.
Por ejemplo, puede que recibas un tablero de 5 x 4 como este (aquí los espacios vacíos se representan con el carácter '·' para que se vean en pantalla):
·*·*·
··*··
··*··
·····
Que tu código debe transformar en esto:
1*3*1
13*31
·2*2·
·111·
Verás que en las pruebas aparecen opciones adicionales para jq.
run jq -s -R -c -f flower-field.jq << 'END_INPUT'
¿Qué significan?
-s
Este es el modo «slurp». En lugar de tratar la entrada como un flujo de objetos JSON, toda la entrada se junta en un 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 «en bruto» (sin comillas).
Esta opción hace 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"
Saber manejar esto forma parte del reto de este ejercicio.
Regístrate en Exercism para aprender y dominar jq con 12 conceptos75 ejercicios y mentoría humana real, todo gratis.
Exploramos bucles for anidados, un uso ingenioso de min/max para simplificar la comprobación de límites, canalizaciones funcionales y el uso de matrices bidimensionales.