A veces, cuando hago garabatos, dibujo un rectángulo, empiezo con una diagonal desde una de las esquinas y luego trazo una línea "reflejándola" cada vez que golpeo un lado del rectángulo. Continúo con esto hasta que alcanzo otra esquina del rectángulo (y espero que la relación de aspecto de mi rectángulo no sea irracional;)). Esto es como trazar el camino de un láser que brilla en una caja. Debes producir el resultado de eso con el arte ASCII.
Como ejemplo, considere una caja de ancho 5
y alto 3
. Siempre comenzaremos en la esquina superior izquierda. El #
marca el límite de la caja. Tenga en cuenta que el ancho y la altura se refieren a las dimensiones internas.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
El reto
Dado el ancho y la altura (positivos) de la caja, debe producir el resultado final del trazado del láser. Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando, argumento de función y generar el resultado a través de STDOUT (o la alternativa más cercana), o mediante valores o argumentos de retorno de función.
Puede usar cualquier formato conveniente de lista, cadena o número para la entrada. El resultado debe ser una sola cadena (a menos que lo imprima en STDOUT, lo que, por supuesto, puede hacer gradualmente). Esto también significa que puede tomar el alto primero y el ancho segundo, solo especifique el formato de entrada exacto en su respuesta.
No debe haber espacios en blanco iniciales ni finales en ninguna línea de la salida. Opcionalmente, puede generar una nueva línea final.
Debe utilizar el espacio, /
, \
y #
y reproducir los casos de prueba exactamente como se muestra.
Casos de prueba
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
serían necesarios para los cruces. Quizás la próxima vez. ;)