Entrada
- Uma matriz binária representando as paredes de uma masmorra.
- A posição do jogador dentro da masmorra.
- A direção que o jogador está enfrentando no momento (0 = Norte, 1 = Leste, 2 = Sul, 3 = Oeste)
Saída
Uma representação pseudo-3D das paredes que estão no campo de visão do jogador, como uma arte ASCII de caracteres.
Abaixo estão vários quadros de saída possíveis, juntamente com o mapa e a bússola correspondentes para ajudar a entender o problema (mas desenhar o mapa e a bússola não faz parte do desafio).
Especificação
Campo de visão
O jogador tem paredes no seu campo de vista, marcada a partir de para . Abaixo estão as posições das paredes em relação ao jogador (em amarelo), em todas as direções possíveis.
Desenhando as paredes
As paredes devem ser desenhadas de a nesta ordem exata, uma vez que qualquer peça desenhada anteriormente pode ser substituída por paredes mais próximas. Obviamente, você pode implementá-lo de maneira diferente, desde que o resultado final seja o mesmo.
Toda a saída é desenhada com 7 caracteres distintos: " "
, "'"
, "."
, "|"
, "-"
, "_"
e ":"
.
Como o detalhamento das formas das paredes no corpo desse desafio o tornaria muito longo, elas são fornecidas no seguinte link TIO:
Os caracteres que não fazem parte de uma parede são marcados com a "?"
nesses diagramas. Eles devem ser tratados como caracteres 'transparentes' que não são desenhados. Por outro lado, todos os espaços dentro de uma parede são 'sólidos' e devem substituir quaisquer outros caracteres que possam ter sido desenhados anteriormente lá.
Regras
Sobre a entrada
- Pode tomar , , e em qualquer formato razoável.
- Você pode usar coordenadas com índice 0 ou 1.
- Você pode usar quatro valores distintos de sua escolha para as instruções.
- A matriz é garantida como pelo menos .
- Você pode supor que sempre haverá paredes circundantes nas bordas.
- É garantido que o jogador esteja localizado em um quadrado vazio.
- A entrada é garantida como válida.
Sobre a saída
- As paredes devem ser desenhadas exatamente como descrito.
- No entanto, o formato de saída também é flexível: cadeia única, matriz de cadeias, matriz de caracteres, etc.
- Os espaços em branco à esquerda e à direita são aceitáveis desde que sejam consistentes.
Isso é código-golfe .
Casos de teste
Todos os casos de teste estão usando a seguinte matriz:
[ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
[ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 ],
[ 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 ],
[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ],
[ 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
As seguintes entradas estão usando coordenadas indexadas em 0, com apontando para o canto superior esquerdo.
x=3, y=3, d=0
x=6, y=4, d=3
x=4, y=4, d=1
x=1, y=5, d=2
x=7, y=7, d=3
x=6, y=6, d=1
x=8, y=1, d=2
x=7, y=6, d=1
Resultados esperados:
------------------------------ ------------------------------
x=3, y=3, d=0: x=6, y=4, d=3:
------------------------------ ------------------------------
__ __ '. .'
|'. .'| | |
| '.--------------.' | |----. |
| | | | | | '.--------. |
| | | | | | | | |
| | | | | | | | |
| | | | | | .'--------' |
| .'--------------'. | |----' |
__|.' '.|__ | |
.' '.
------------------------------ ------------------------------
x=4, y=4, d=1: x=1, y=5, d=2:
------------------------------ ------------------------------
.' __ ________________________ .'
| | |
-------. .----| | |
| '.--------.' | | | |
| | | | | | |
| | | | | | |
| .'--------'. | | | |
-------' '----| | |
| __|________________________|
'. '.
------------------------------ ------------------------------
x=7, y=7, d=3: x=6, y=6, d=1:
------------------------------ ------------------------------
'. '.
|'. |'.
| '. | '.
| | '. .- | |--.--------.--------.-
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '- | |--'--------'--------'-
| .' | .'
|.' |.'
.' .'
------------------------------ ------------------------------
x=8, y=1, d=2: x=7, y=6, d=1:
------------------------------ ------------------------------
'. __ '.
|'. .'| |
| '. .' | |----.--------------.-------
| | '. .' | | | | |
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '. | | | | |
| .' '. | |----'--------------'-------
|.' '.|__ |
.' .'
Desafio relacionado:
Este desafio de 2013 está intimamente relacionado. Mas possui um critério de ganho diferente (desafio de código), uma especificação muito mais flexível da saída e requer E / S interativa.