Track
/
jq
jq
/
Esercizi
/
Campo di fiori
Campo di fiori

Campo di fiori

Difficile

Introduzione

Campo di fiori è una rivisitazione gentile del popolare gioco Minesweeper. Lo scopo del gioco è trovare tutti i fiori del giardino usando gli indizi numerici che indicano quanti fiori sono direttamente adiacenti (in orizzontale, in verticale, in diagonale) a una casella. «Campo di fiori» è stato distribuito nelle versioni regionali di Microsoft Windows in Italia, Germania, Corea del Sud, Giappone e Taiwan.

Istruzioni

Il tuo compito è aggiungere il numero di fiori alle caselle vuote di un giardino del Campo di fiori completato. Il giardino stesso è una griglia rettangolare composta da caselle che possono essere vuote (' ') oppure contenere un fiore ('*').

Per ogni casella vuota, conta il numero di fiori adiacenti (in orizzontale, in verticale, in diagonale). Se la casella vuota non ha fiori adiacenti, lasciala vuota. Altrimenti sostituiscila con il numero di fiori adiacenti.

Ad esempio, potresti ricevere una griglia 5 x 4 come questa (qui gli spazi vuoti sono rappresentati con il carattere «·» per la visualizzazione sullo schermo):

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

Che il codice dovrebbe trasformare in questa:

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

Opzioni aggiuntive della riga di comando di jq

Noterai delle opzioni aggiuntive per jq nei test.

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

Cosa sono?

  • -s

    Questa è la modalità «slurp». Invece di gestire l'input come un flusso di oggetti JSON, l'intero input verrà raccolto in un array.

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

    Potresti aver già visto -r, per produrre stringhe «raw» (senza virgolette). Questa è l'opzione opposta. Ogni riga di input viene considerata una stringa.

    Due esempi:

    $ 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"
    

Quando combini queste due opzioni, non ottieni un array di stringhe: ottieni l'intero input come un'unica stringa, compresi i caratteri di nuova riga a fine riga.

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

Gestire questo fa parte della sfida di questo esercizio.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
jq Exercism

Vuoi iniziare Campo di fiori?

Iscriviti a Exercism per imparare e padroneggiare jq con 12 concetti75 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Campo di fiori!

Esploriamo i cicli for annidati, l'uso intelligente di min/max per semplificare il controllo dei limiti, le pipeline funzionali e l'uso di matrici bidimensionali.