Produrre un programma per numerare correttamente una griglia di parole crociate.
Ingresso
L'input sarà il nome di un file che rappresenta la griglia del cruciverba. Il nome file di input può essere passato come argomento, sull'input standard o con altri mezzi convenzionali diversi dall'hardcoding.
Formato file griglia: un file di testo. La prima riga è composta da due costanti intere separate da spazi bianchi M
e N
. Seguendo quella linea ci sono M
linee ciascuna composta da N
caratteri (più una nuova linea) selezionati da [#A-Z ]
. Questi personaggi sono interpretati in modo tale da '#'
indicare un quadrato bloccato, ' '
un quadrato aperto nel puzzle senza contenuti noti e qualsiasi lettera un quadrato aperto il cui contenente quella lettera.
Produzione
L'output sarà un file di numerazione e può essere inviato all'output standard, a un file il cui nome è derivato dal nome file di input, a un file specificato dall'utente o ad un'altra destinazione convenzionale.
Formato file di numerazione Un file di testo. Le righe che iniziano con '#' vengono ignorate e possono essere utilizzate per i commenti. Tutte le altre linee contengono una scheda separata tripletta i
, m
, n
dove i
rappresenta un numero da stampare sulla griglia, ed m
e n
rappresenta la riga e colonna del quadrato dove dovrebbe essere stampata. Il numero di righe e colonne inizia da 1.
Schema di numerazione
Una griglia numerata correttamente ha le seguenti proprietà:
- La numerazione inizia da 1.
- Nessuna colonna o intervallo di quadrati aperti non è numerato. (Si può presumere che nel problema non esista una risposta a carattere singolo.)
- I numeri verranno rilevati nell'ordine di conteggio eseguendo la scansione dalla riga superiore a quella inferiore prendendo ogni riga da sinistra a destra. (Quindi, ogni intervallo orizzontale è numerato nella sua casella più a sinistra e ogni colonna è numerata nella sua casella più in alto.)
Test input e output attesi
Ingresso:
5 5
# ##
#
#
#
## #
Output (trascurando le righe di commento):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
A parte
Questo è il primo di quelle che si spera siano diverse sfide legate al cruciverba. Ho intenzione di utilizzare un insieme coerente di formati di file in tutto e di creare una rispettabile suite di utilità correlate alle parole incrociate nel processo. Ad esempio, un puzzle successivo richiederà la stampa di una versione ASCII del cruciverba in base all'input e all'output di questo puzzle.
'\n'
in c su tutte le piattaforme. Il presupposto è che il file di input sia stato prodotto sullo stesso sistema che lo elaborerà, quindi questo problema dovrebbe essere trasparente. Una nota generale sul code-golf: se stai lavorando in una strana lingua o su una strana piattaforma, prendi nota di tutto ciò che potrebbe sorprendere il lettore. Le persone terranno conto di ciò nel giudicare la tua richiesta.