Manchmal zeichne ich beim Kritzeln ein Rechteck, beginne mit einer Diagonale an einer der Ecken und zeichne dann einfach eine Linie aus, indem ich sie "reflektiere", wenn ich auf eine Seite des Rechtecks treffe. Ich mache so weiter, bis ich eine andere Ecke des Rechtecks getroffen habe (und hoffe, dass das Seitenverhältnis meines Rechtecks nicht irrational war;)). Das ist, als würde man den Weg eines Lasers in eine Kiste verfolgen. Das Ergebnis soll mit ASCII-Kunst erzeugt werden.
Betrachten Sie als Beispiel eine Box mit Breite 5
und Höhe 3
. Wir werden immer in der oberen linken Ecke beginnen. Das #
markiert die Begrenzung der Box. Beachten Sie, dass sich Breite und Höhe auf die Innenmaße beziehen.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
Die Herausforderung
Angesichts der (positiven) Breite und Höhe der Box sollten Sie das Endergebnis der Laserverfolgung erzielen. Sie können ein Programm oder eine Funktion schreiben, indem Sie die Eingabe über STDIN (oder die nächstgelegene Alternative), das Befehlszeilenargument oder das Funktionsargument vornehmen und das Ergebnis über STDOUT (oder die nächstgelegene Alternative) oder über Funktionsrückgabewerte oder -argumente ausgeben.
Sie können für die Eingabe ein beliebiges Listen-, Zeichenfolge- oder Zahlenformat verwenden. Die Ausgabe muss eine einzelne Zeichenfolge sein (es sei denn, Sie drucken sie nach STDOUT, was Sie natürlich schrittweise tun können). Dies bedeutet auch, dass Sie zuerst die Höhe und dann die Breite eingeben können. Geben Sie einfach das genaue Eingabeformat in Ihrer Antwort an.
In keiner Zeile der Ausgabe darf ein führender oder nachfolgender Leerraum vorhanden sein. Optional können Sie eine einzelne nachgestellte Newline ausgeben.
Sie müssen Raum nutzen, /
, \
und #
und die Testfälle genau wie dargestellt reproduzieren.
Testfälle
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
die für Überfahrten notwendig wären. Vielleicht nächstes Mal. ;)