Parfois, lorsque je gribouille, je dessine un rectangle, je commence par une diagonale dans l'un des coins, puis je trace une ligne en la "réfléchissant" chaque fois que je frappe un côté du rectangle. Je continue avec cela jusqu'à ce que j'atteigne un autre coin du rectangle (et j'espère que le rapport d'aspect de mon rectangle n'était pas irrationnel;)). C'est comme tracer le chemin d'un laser brillé dans une boîte. Vous devez produire le résultat de cela avec l'art ASCII.
À titre d'exemple, considérons une boîte de largeur 5
et de hauteur 3
. Nous commencerons toujours dans le coin supérieur gauche. Le #
marque la limite de la boîte. Notez que la largeur et la hauteur se réfèrent aux dimensions intérieures.
####### ####### ####### ####### ####### ####### #######
#\ # #\ # #\ \# #\ /\# #\ /\# #\/ /\# #\/\/\#
# \ # # \ /# # \ /# # \/ /# # \/ /# #/\/ /# #/\/\/#
# \ # # \/ # # \/ # # /\/ # #\/\/ # #\/\/ # #\/\/\#
####### ####### ####### ####### ####### ####### #######
Le défi
Étant donné la largeur et la hauteur (positives) de la boîte, vous devriez produire le résultat final du traçage du laser. Vous pouvez écrire un programme ou une fonction, en prenant des entrées via STDIN (ou l'alternative la plus proche), l'argument de ligne de commande, l'argument de la fonction et la sortie du résultat via STDOUT (ou l'alternative la plus proche), ou via des valeurs ou des arguments de retour de fonction.
Vous pouvez utiliser n'importe quel format de liste, chaîne ou nombre commode pour la saisie. La sortie doit être une seule chaîne (sauf si vous l'imprimez sur STDOUT, ce que vous pouvez bien sûr faire progressivement). Cela signifie également que vous pouvez prendre la hauteur en premier et la largeur en second - spécifiez simplement le format d'entrée exact dans votre réponse.
Il ne doit y avoir ni espace de début ni de fin sur aucune ligne de la sortie. Vous pouvez éventuellement générer une seule nouvelle ligne de fin.
Vous devez utiliser l' espace, /
, \
et #
et reproduire les cas de test exactement comme indiqué.
Cas de test
2 2
####
#\ #
# \#
####
3 2
#####
#\/\#
#/\/#
#####
6 3
########
#\ /#
# \ / #
# \/ #
########
7 1
#########
#\/\/\/\#
#########
1 3
###
#\#
#/#
#\#
###
7 5
#########
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#/\/\/\/#
#\/\/\/\#
#########
22 6
########################
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
# /\ /\ /\ /\ /\ /#
#/ \/ \/ \/ \/ \/ #
#\ /\ /\ /\ /\ /\ #
# \/ \/ \/ \/ \/ \#
########################
X
cela serait nécessaire pour les traversées. Peut-être la prochaine fois. ;)