Czasami, gdy rysuję, rysuję prostokąt, zaczynam od przekątnej z jednego z rogów, a następnie po prostu wykreślam linię, „odbijając” ją, gdy uderzę w bok prostokąta. Kontynuuję to, dopóki nie trafię w kolejny narożnik prostokąta (i mam nadzieję, że proporcje mojego prostokąta nie były irracjonalne;)). To jest jak wytyczenie ścieżki lasera świecącego do pudełka. Wytworzysz to dzięki sztuce ASCII.
Jako przykład rozważmy pole szerokości 5
i wysokości 3
. Zawsze zaczniemy od lewego górnego rogu. Te #
znaki graniczne z pudełka. Pamiętaj, że szerokość i wysokość odnoszą się do wymiarów wewnętrznych.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
Wyzwanie
Biorąc pod uwagę (dodatnią) szerokość i wysokość pudełka, powinieneś uzyskać końcowy wynik śledzenia lasera. Możesz napisać program lub funkcję, przyjmując dane wejściowe za pośrednictwem STDIN (lub najbliższej alternatywy), argument wiersza poleceń, argument funkcji i wypisz wynik za pomocą STDOUT (lub najbliższej alternatywy) lub za pomocą zwracanych wartości lub argumentów funkcji.
Do wprowadzenia możesz użyć dowolnego wygodnego formatu listy, łańcucha lub liczby. Wynik musi być pojedynczym ciągiem znaków (chyba że wydrukujesz go do STDOUT, co oczywiście możesz zrobić stopniowo). Oznacza to również, że możesz wziąć najpierw wysokość, a szerokość drugą - po prostu określ dokładny format wejściowy w swojej odpowiedzi.
W żadnym wierszu wyniku nie może być ani początkowych ani końcowych białych znaków. Opcjonalnie możesz wypisać jeden końcowy znak nowej linii.
Musisz wykorzystać przestrzeń, /
, \
a #
i rozmnażać przypadków testowych dokładnie tak, jak pokazano na rysunku.
Przypadki testowe
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
byłyby konieczne do przejazdów. Może następnym razem. ;)