Questa sfida si basa sul gioco Layerz.
Dato, su stdin o come argomento di funzione, una matrice rettangolare di celle 2D in cui ogni cella contiene uno spazio vuoto (puoi scegliere di usare 0s invece di spazi vuoti senza penalità), un 1, un 2, un 3 o un 4 ; trovare un modo per dividerlo in regioni valide (come definito di seguito) in modo tale che ogni cella non vuota sia contenuta esattamente da una regione. Quindi, genera la soluzione trovata in qualsiasi formato ragionevole. Se non esiste una soluzione, arrestare senza produrre output o emettere un singolo valore di falso, quindi arrestare.
Una delle seguenti costituisce una regione valida:
- Una singola cella contenente un 1
- Una cellula contenente un 2 ed esattamente uno dei suoi vicini ortogonali non vuoti
- Una cellula contenente un 3 ed esattamente due dei suoi vicini ortogonali non vuoti
- Una cellula contenente un 4 ed esattamente tre dei suoi vicini ortogonali non vuoti
Questo è code-golf , quindi vince la risposta valida più breve, in byte.
Alcuni casi di test:
1. Uno piuttosto banale:
E questa è la soluzione, con ogni regione di un colore diverso:
2. Uno più interessante
Questo ha più di una soluzione, ma eccone una:
3. Uno più piccolo, contenente spazi vuoti, che non ha alcuna soluzione (a seconda che tu usi uno dei due per "catturare" i tre, o i tre per prendere due dei due, o sei lasciato con un coppia di due non adiacenti [e quindi non raggruppabili] o uno solo due):
Poiché questa griglia non ha soluzioni, il programma dovrebbe arrestarsi senza produrre alcun output quando viene fornita questa griglia.
4. Questo (con i primi 2 spostati di una cella a sinistra) ha una soluzione però:
Soluzione:
(In basso a destra 2 viene utilizzato per "catturare" il 3)
5. Perché avevamo bisogno di un caso di test con alcuni fours:
Una soluzione:
4
s se quelli sono input validi.