E se tivermos um corredor composto por dois espelhos paralelos?
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
Agora, apontamos um laser para baixo ...
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \ |
| \|
| /|
| / |
Veja. Ele saltou, no final, lá.
E se nós desenharmos dois lasers, mas indo na direção oposta?
| \ / |
| \ / |
| \/ |
| /\ |
| / \ |
| / \ |
| / \ |
|/ \|
|\ /|
| \ / |
Hmm, eles não pareciam se encontrar lá. Isso é conveniente. O que acontece se os dois lasers ocuparem o mesmo espaço?
| \ / |
| \ / |
| \ / |
| X |
| / \ |
| / \ |
| / \ |
| / \|
|/ /|
|\ / |
Eu acho que isso era bastante óbvio, hein?
Desenhar esses diagramas à mão é bastante trabalhoso (confie em mim). Talvez algum código possa fazer isso por nós?
- Escreva algum código para emitir dois espelhos paralelos, com dois lasers que se cruzam e saltam.
- Entrada (todos os números inteiros):
- A largura do corredor
- O comprimento do corredor
- A posição inicial do laser correto (indexado a zero, deve ser menor que a largura)
- Posição inicial do laser esquerdo (indexado a zero, deve ser menor que a largura)
- Processo
- Se um laser estiver funcionando corretamente, ele será desenhado um espaço à direita na linha a seguir.
- Se um laser for deixado em movimento, ele será desenhado um espaço à esquerda na linha a seguir.
- Se um laser não puder dar um passo lateral, ele mudará de direção, mas não de posição.
- Se os dois laser estiverem no mesmo índice, imprima um X maiúsculo nesse índice.
- Resultado
- Uma sequência com várias linhas
- Cada linha começa e termina com um caractere de barra vertical (|)
- O laser à direita é indicado por uma barra invertida (\)
- O laser esquerdo é indicado por uma barra (/)
- A interseção de dois lasers é denotada por um X maiúsculo.
- Qualquer língua
- Eu gostaria de ver os links do TIO
- Tentativa de corrigi-lo no menor número de bytes
Casos de teste
largura: 6 comprimento: 10 à direita: 1 à esquerda: 4
| \ / |
| \/ |
| /\ |
| / \ |
|/ \|
|\ /|
| \ / |
| \/ |
| /\ |
| / \ |
largura: 6 comprimento: 10 à direita: 0 à esquerda: 1
|\/ |
|/\ |
|\ \ |
| \ \ |
| \ \ |
| \ \|
| \/|
| /\|
| / /|
| / / |
largura: 4 comprimento: 10 à direita: 2 à esquerda: 0
|/ \ |
|\ \|
| \ /|
| X |
| / \|
|/ /|
|\ / |
| X |
|/ \ |
|\ \|
largura: 20 comprimento: 5 à direita: 5 à esquerda: 15
| \ / |
| \ / |
| \ / |
| \ / |
| \ / |
largura: 5 comprimento: 6 à direita: 2 à esquerda: 2
| X |
| / \ |
|/ \|
|\ /|
| \ / |
| X |
largura: 1 comprimento: 2 à direita: 0 à esquerda: 0
|X|
|X|