Hai un piccolo robot con quattro sensori di distanza. Conosce la disposizione di una stanza, ma non ha senso dell'orientamento se non quello di essere in grado di bloccare l'orientamento della griglia. Vuoi essere in grado di scoprire dove si basa il robot in base alle letture, ma può essere ambiguo a causa dei sensori limitati.
Spiegazione della sfida
Ti verrà data una disposizione della stanza e quattro letture della distanza in senso orario che danno il numero di celle tra te e un muro. Possono esserci pareti nel mezzo della stanza e anche i bordi della griglia sono pareti. Il robot non può essere posizionato sopra un muro.
Il tuo obiettivo è quello di elencare tutte le posizioni all'interno della stanza in cui potrebbe trovarsi il robot che darebbe le letture fornite. Tieni presente che il robot non ha senso dell'orientamento (tranne che essere bloccato ad angoli di 90 gradi sulla griglia, ovvero che il robot non sarà mai orientato in diagonale o in qualche altro angolo di inclinazione), quindi una lettura di [1, 2, 3, 4], ad esempio, è uguale alla lettura [3, 4, 1, 2].
Esempi
Per questi esempi, le coordinate della cella verranno fornite come coppie indicizzate 0 (x, y) dalla cella in alto a sinistra. Le letture verranno fornite in senso orario in un elenco quadrato tra parentesi. I layout utilizzeranno i segni di cancelletto per muri e altri caratteri (di solito punti) per rappresentare celle vuote.
Caso 1
. . . .
. . . .
. . # .
. . . .
- [1, 0, 2, 3] ==> (1, 0), (3, 1)
- [0, 0, 3, 3] ==> (0, 0), (3, 0), (0, 3), (3, 3)
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [1, 1, 2, 2] ==> (1, 1)
Caso 2
# a . # a .
a # . . # a
. . # . . #
# . . # . .
a # . . # a
. a # . a #
- [0, 0, 1, 1] ==> ogni posizione sulla griglia che è un punto
- [1, 0, 0, 0] ==> tutte le a sulla griglia
Caso 3
.
- [0, 0, 0, 0] ==> (0, 0)
Caso 4
. # #
. . .
- [1, 2, 0, 0] ==> (0, 1)
- [0, 1, 2, 0] ==> (0, 1)
- [0, 0, 1, 0] ==> (0, 0)
- [1, 0, 1, 0] ==> (1, 1)
- [0, 1, 0, 1] ==> (1, 1)
Caso 5
. # . .
. . . .
. . # .
. . . .
- [2, 1, 1, 0] ==> (0, 2), (2, 1)
- [0, 2, 2, 1] ==> (1, 1)
- [1, 0, 2, 2] ==> (1, 1)
- [0, 3, 0, 0] ==> (0, 0)
- [1, 0, 1, 1] ==> (1, 2)
Altre regole
- L'input può essere in qualsiasi formato conveniente. L'input è una griglia di pareti e spazi e un elenco di quattro distanze in senso orario.
- L'output può essere un elenco di tutte le celle che soddisfano la lettura o una versione modificata della griglia che mostra quali celle soddisfano la lettura. Il formato esatto dell'output non ha importanza purché sia ragionevole e coerente. I formati di output validi includono, ma non sono limitati a :
- Stampa una linea per ciascuna coordinata di cella come coppia ordinata
- Stampa la griglia con
.
,#
e!
per lo spazio, pareti, e le possibili posizioni, rispettivamente. - Restituzione di un elenco di coppie ordinate
- Restituzione di un elenco di indici
- Restituzione di un elenco di elenchi che utilizzano valori diversi per spazi, muri e possibili posizioni
- Restituisce / stampa una matrice di 0 e 1, usando 1 per rappresentare le celle in cui si verificherebbe la lettura. (Non è necessario includere muri)
- Ancora una volta, questo elenco non è esaustivo, quindi altre rappresentazioni sono valide purché siano coerenti e mostrino ogni possibile posizione valida in una griglia o in un elenco. Se non sei sicuro, lascia un commento e sarò felice di chiarire.
- Si può presumere che una lettura corrisponda ad almeno una posizione sulla griglia.
- Si può presumere che la griglia di input abbia una dimensione di almeno 1 x 1 e che abbia almeno uno spazio vuoto.
- Si può presumere che la griglia di input non sia più grande di 256 celle in ogni dimensione.
- Si può presumere che la griglia di input sia sempre un rettangolo perfetto e non frastagliato.
- Non ci sono penalità o bonus se il tuo programma dà risultati sani per input non validi.
- Questo è il codice golf, quindi vince il codice più breve.
Case 5
non sembrano del tutto esatte . Ottengo(0,2),(2,1)
,(1,3)
,(1,3)
, enothing
.