
La tua vita potrebbe dipendere da questo. Non batter ciglio. Non battere ciglio. Sbatti le palpebre e sei morto. Sono veloci Più veloce di quanto tu possa credere. Non voltare le spalle, non distogliere lo sguardo e non battere ciglio! In bocca al lupo.
Gli Angeli piangenti sono una razza aliena che non può muoversi mentre viene osservata da un altro essere (persino un altro Angelo). Si nutrono inviando le loro vittime indietro nel tempo. Tu ( il Dottore ) sei intrappolato in una stanza con alcuni, e devi raggiungere il tuo TARDIS.
Compito
Scrivi un programma che, data una rappresentazione ASCII di una stanza rettangolare, produrrà un percorso che ti porterà in sicurezza. Se un Angelo può attaccare - in qualsiasi momento durante i tuoi progressi - quel percorso non è sicuro. Un Angelo può attaccare se può vederti senza essere visto da te o da un altro Angelo.
Ingresso
L'input è composto da due parti. Innanzitutto, la direzione verso cui sei rivolto (NSEW). Quindi, sulle linee successive, una rappresentazione della stanza, che mostra le posizioni di inizio / fine e la posizione / fronte di tutti gli angeli.
L'esempio sotto mostra che c'è un angelo rivolto a ovest e inizi a sud.
S
..........
....D.....
..........
..........
..........
..........
..........
..........
.........W
..........
...T......
.- Spazio vuotoD- The Doctor (posizione iniziale)T- Il TARDIS (posizione finale)N,S,E,W- Un angelo, rivolto nella direzione specificata (nord, sud, est, ovest)
Linea di vista
Puoi vedere qualsiasi spazio entro 45 gradi dalla direzione verso cui sei rivolto. La linea di vista è ostruita se esiste un'altra entità lungo una diagonale diretta orizzontale, verticale o 45 gradi. Qualsiasi altra diagonale non ostruisce la vista. La linea di vista degli angeli funziona allo stesso modo. Ad esempio, nel seguito, -rappresenta il tuo campo visivo, supponendo che tu sia rivolto a sud.
........
...D....
..---...
.-----..
-------.
---N----
---.--N-
---.----
Produzione
L'output è una stringa che rappresenta il percorso che prenderai per uscire. Se esistono più percorsi sicuri, sceglierne uno. Se nessun percorso è sicuro, emettere 0. Se la mappa non è corretta, fai quello che ti piace, incluso lo schianto. Consideralo malformato se la stanza non è rettangolare, non c'è uscita, ecc. Se non ci sono Angeli, non è malformato, semplicemente facile.
Per ogni passaggio, puoi fare una delle due cose: muoverti in una direzione NSEW o girare in una direzione NSEW (senza cambiare posizione). Per spostarsi, basta semplicemente emettere la lettera per quella direzione. Per girare verso una direzione, l'output Fseguito dalla lettera appropriata. Ad esempio, il seguente output:
SSFESSSSSSSW
è un percorso sicuro per il campione indicato nella sezione input. Ti sposti due volte a sud, esci a est per tenere in vista l'angelo, poi vai a sud altre sette volte e ad ovest una volta per entrare nel TARDIS.
Casi test
1) Puoi aggirare l'Angelo rivolto a est per raggiungere il TARDIS. A meno che non si passi direttamente tra loro, si bloccano a vicenda, quindi non importa in che modo ti trovi di fronte in qualsiasi momento.
W
...D....
........
........
........
.E.....W
........
........
...T....
2) perdi. Non c'è modo di superarli. Possono vedersi fino a quando non si passa tra di loro. A quel punto, non puoi affrontarli entrambi e il gioco è fatto. Potrebbe anche solo chiudere gli occhi e farcela.
S
...D....
........
........
........
E......W
........
........
...T....
vincente
Si applicano le regole del golf standard e le scappatoie , vincono meno byte. Cercherò presto di ottenere altri casi di test, ma nel frattempo non esitare a suggerire i tuoi.
Immagine e citazione da Doctor Who.
J).