Et si nous avions un couloir composé de deux miroirs parallèles?
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Maintenant, nous lançons un laser
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \|
| /|
| / |
Oh regarde. Il a rebondi, vers la fin, là-bas.
Et si on dessinait deux lasers MAIS dans la direction opposée?
| \ / |
| \ / |
| \/ |
| /\ |
| / \ |
| / \ |
| / \ |
|/ \|
|\ /|
| \ / |
Hmm, ils ne semblaient pas se rencontrer, là-bas. C'est pratique. Que se passe-t-il si les deux lasers occupent le même espace?
| \ / |
| \ / |
| \ / |
| X |
| / \ |
| / \ |
| / \ |
| / \|
|/ /|
|\ / |
Je suppose que c'était assez évident, hein?
Dessiner ces diagrammes à la main est assez laborieux (croyez-moi là-dessus). Peut-être que du code pourrait le faire pour nous?
- Ecrivez du code pour produire deux miroirs parallèles, avec deux lasers qui se croisent et qui rebondissent.
- Entrée (tous les entiers):
- La largeur du couloir
- La longueur du couloir
- Position de départ du laser de droite (index zéro, doit être inférieur à la largeur)
- Position de départ du laser de gauche (index zéro, doit être inférieur à la largeur)
- Processus
- Si un laser fonctionne correctement, il sera tracé d’un espace vers la droite sur la ligne suivante.
- Si un laser est laissé en cours, il sera dessiné d'un espace à gauche sur la ligne suivante.
- Si un laser ne peut pas faire son pas de côté, il changera de direction, mais pas sa position.
- Si les deux lasers se trouvent au même index, imprimez un X majuscule à cet index.
- Sortie
- Une ficelle à plusieurs lignes
- Chaque ligne commence et finit par un caractère de pipe (|)
- Les lasers à droite sont signalés par une barre oblique inversée (\)
- Les lasers de gauche sont signalés par une barre oblique (/)
- L'intersection de deux lasers est désignée par un X majuscule.
- N'importe quel langage
- J'aimerais voir des liens TIO
- Essayez de le réparer dans le plus petit nombre d'octets
Cas de test
largeur: 6 longueur: 10 à droite: 1 à gauche: 4
| \ / |
| \/ |
| /\ |
| / \ |
|/ \|
|\ /|
| \ / |
| \/ |
| /\ |
| / \ |
largeur: 6 longueur: 10 à droite: 0 à gauche: 1
|\/ |
|/\ |
|\ \ |
| \ \ |
| \ \ |
| \ \|
| \/|
| /\|
| / /|
| / / |
largeur: 4 longueur: 10 à droite: 2 à gauche: 0
|/ \ |
|\ \|
| \ /|
| X |
| / \|
|/ /|
|\ / |
| X |
|/ \ |
|\ \|
largeur: 20 longueur: 5 à droite: 5 à gauche: 15
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
largeur: 5 longueur: 6 à droite: 2 à gauche: 2
| X |
| / \ |
|/ \|
|\ /|
| \ / |
| X |
largeur: 1 longueur: 2 à droite: 0 à gauche: 0
|X|
|X|