Dato un tabellone, scrivi il programma o la funzione più breve per visualizzare o restituire quali personaggi sono in vista del giocatore. Un personaggio è in vista se è possibile tracciare una linea tra lui e il giocatore, senza attraversare alcun personaggio che blocchi la visione.
Ingresso:
@rappresenta la posizione del giocatore. Ci sarà solo uno di questi nell'input.- qualsiasi personaggio che corrisponde alla
[#A-Z]visione regex blocca. - qualsiasi personaggio che corrisponda
[ a-z]consente la visione. - non ci saranno caratteri non validi
- ti viene garantito un input rettangolare
Le linee sono definite come segue:
- definire il vettore come grandezza e direzione
- una direzione è una tra N, NE, E, SE, S, SW, W, NW
- un magnitudo è il numero di caratteri lungo quella direzione da contare
- lascia che il vettore iniziale sia chiamato d 1 ; il secondo vettore si chiama d 2
- uno di d 1 o d 2 deve avere una grandezza di
1; l'altro può avere qualsiasi grandezza - La direzione di d 1 deve essere adiacente alla direzione di d 2 (ad es. N e NE)
Una linea è definita per essere tutti i caratteri lungo il percorso contrassegnato applicando d 1 , quindi d 2 , d 1 , d 2 ....
Linea di campionamento (indicata dalla .s):
d 1 = (magnitudine: 4, direzione: E)
d 2 = (magnitudine: 1, direzione NE)
.....
.....
.....
@....
Produzione:
- ogni personaggio visibile nella giusta posizione,
.sostituisce lo spazio. - Spazio per ogni personaggio non visibile.
Input di esempio:
@
K
J
L
o
Uscita corrispondente:
@.........
....K.....
.J.....
..........
.. .L.....
.. . ....
... .. ...
... .. ..
... . .
.... ..
Input di esempio:
B###M# by
#Q # Zmpq
# # aaa
@ m #
# ##P#
# ####
# ####
#M ###
######
Uscita corrispondente:
.B #M
.# .. Z pq
.#.#.aaa..
@..m.#
#.##P#
.#
.#
M.
#
Input di esempio:
w
O l gg rT
QQL Ag #b
qqqqq XqQ
x V# f@aa
Y aaa
uU E l TaKK
e dd FF d opi
e d
Uscita corrispondente:
.......... .....
......... .....
O..l...gg..rT
...QQL......Ag..#b..
...qqqqq.........XqQ
#.f@aa......
Y........aaa.....
...uU..E..l.TaKK....
d..FF.d.op
.... .d. ...