A volte, quando scarabocchio, disegno un rettangolo, comincio con una diagonale da uno degli angoli, e poi traccia solo una linea "riflettendola" ogni volta che colpisco un lato del rettangolo. Continuo fino a quando non raggiungo un altro angolo del rettangolo (e spero che le proporzioni del mio rettangolo non siano irrazionali;)). Questo è come tracciare il percorso di un raggio laser in una scatola. Devi produrre il risultato con l'arte ASCII.
Ad esempio, considera una scatola di larghezza 5
e altezza 3
. Inizieremo sempre nell'angolo in alto a sinistra. I #
segna il confine della scatola. Si noti che la larghezza e l'altezza si riferiscono alle dimensioni interne.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
La sfida
Data la larghezza (positiva) e l'altezza della scatola, dovresti produrre il risultato finale del tracciamento del laser. È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando, l'argomento della funzione e l'output del risultato tramite STDOUT (o l'alternativa più vicina) o tramite valori o argomenti di ritorno della funzione.
È possibile utilizzare qualsiasi elenco conveniente, stringa o formato numerico per l'input. L'output deve essere una singola stringa (a meno che non lo si stampi su STDOUT, cosa che si può ovviamente fare gradualmente). Questo significa anche che puoi prendere prima l'altezza e la larghezza in secondo luogo - specifica semplicemente il formato di input esatto nella tua risposta.
Non ci deve essere spazio bianco iniziale o finale su nessuna riga dell'output. È possibile facoltativamente generare una nuova riga finale finale.
È necessario utilizzare lo spazio, /
, \
ed #
e riprodurre i test esattamente come mostrato.
Casi test
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
sarebbero necessari per gli incroci. Forse la prossima volta. ;)