Questa è un'ulteriore sfida alla sfida di generare puzzle Loopy . Potresti voler risolvere questa sfida prima di tentare la sfida più difficile nel link precedente.
L'obiettivo di questa sfida è convalidare la soluzione di un puzzle circolare. Si prega di prendere tutta la documentazione su cosa sia un puzzle loopy dal link precedente. Un puzzle loopy risolto è formattato in un modo molto simile all'output di un invio valido alla sfida "generate puzzle loopy" e può apparire così:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
Il percorso che costituisce la soluzione è contrassegnato da |e -caratteri tra i +caratteri.
Specifica di input
Il tuo programma riceverà un puzzle circolare con una soluzione formattata come l'esempio sopra come input. Il tuo programma deve dedurre la dimensione del puzzle dall'input. È possibile formulare le seguenti ipotesi sull'input:
- Il puzzle ha non meno di 2 e non più di 99 celle in entrambe le direzioni
- Pertanto, ogni riga ha una lunghezza massima di 199 caratteri, esclusi i caratteri di nuova riga
- Pertanto, l'ingresso contiene un massimo di 99 righe
- ogni riga può terminare dopo l'ultimo carattere stampabile o può essere riempita con caratteri spazi bianchi in modo che abbia una lunghezza massima di 2 · y + 1 caratteri dove y è il numero di celle in direzione orizzontale
- ogni posizione sia x ed y coordinate contiene anche un
+carattere - le posizioni orizzontalmente o verticalmente adiacenti alle posizioni che contengono
+caratteri contengono uno spazio bianco, sono dietro la fine della linea o contengono un-carattere se adiacente orizzontalmente o un|carattere se adiacente verticalmente - tutte le altre posizioni sono o dietro l'estremità della linea o contenere uno dei caratteri
,0,1,2, o3 - tutte le righe sono terminate con i caratteri di nuova riga predefiniti della piattaforma
- c'è esattamente una nuova riga finale
L'input deve essere ricevuto in uno dei seguenti modi:
- Dall'input standard
- Come valore di un parametro denominato
pin una richiesta POST HTTP - Come il contenuto di un modulo HTML
- Come il contenuto di un file denominato
pin una directory definita dall'implementazione - In un modo definito di implementazione in fase di esecuzione se i primi quattro non sono disponibili
- Hard coded se la tua lingua non fornisce alcun mezzo per ricevere input
Specifica di uscita
Il programma terminerà per tutti gli input corrispondenti alla specifica di input e calcolerà se la soluzione al puzzle è corretta. Il programma deve generare il risultato del calcolo come valore booleano in uno dei seguenti modi:
- Come stato di uscita pari a zero (soluzione valida) o diverso da zero (soluzione non valida)
- Poiché il carattere
y(la soluzione è valida) on(la soluzione non è valida) seguito da zero o più caratteri arbitrari emessi in un modo definito dall'implementazione
Il comportamento del programma non è specificato quando si verificano input non formattati in base alle specifiche di input.
punteggio
Il punteggio del tuo programma è il numero di caratteri nella sua fonte, ad eccezione dei caratteri di spazi bianchi omettibili e dei commenti omettibili. Sei incoraggiato a indentare la tua proposta in modo che sia più facile da leggere per gli altri e commentare la tua soluzione in modo che sia più facile da seguire.
Gli invii che non seguono le specifiche di input o output o generano risultati errati non sono validi.
0è presente anche un numero valido per una cella.