Uma sala pode ser composta de retângulos conectados, por exemplo, uma sala em forma de L. Essa sala pode ser descrita por uma lista de dimensões que descrevem o tamanho de cada retângulo.
Suponha que você tenha duas listas de entrada. O primeiro contém a largura dos retângulos empilhados verticalmente um sobre o outro. O segundo contém a altura dos retângulos.
Como exemplo, a entrada [4 6][3 2]
será um retângulo de 4 por 3 no topo de um retângulo de 6 por 2. A figura abaixo mostra esta forma. Observe que as paredes são consideradas "finas", portanto, são os espaços entre a parede que são determinados pela entrada.
[4 6][3 2]
____
| |
| |
| |_
| |
|______|
O desafio é: Pegue uma lista de dimensões como entrada e produza a forma da sala como arte ASCII. O formato deve ser como nas figuras de exemplo:
- Todas as paredes horizontais são mostradas usando sublinhados
- Todas as paredes verticais são mostradas usando barras
- Não deve haver paredes onde os retângulos estão conectados
- A parede esquerda é reta
- Para mais detalhes, dê uma olhada nos casos de teste
Suposições que você pode fazer:
- Todas as dimensões estão no intervalo
[1 ... 20]
- Todas as dimensões horizontais são números pares
- O número de retângulos estará na faixa
[1 ... 10]
- Somente entrada válida é fornecida
- Formato de entrada opcional (você pode decidir a ordem das dimensões de entrada, especifique na resposta).
Casos de teste:
[2][1]
__
|__|
---
[4][2]
____
| |
|____|
---
[2 6 2 4][2 2 1 3]
__
| |
| |___
| |
| ___|
| |_
| |
| |
|____|
---
[2 14 6 8 4 18 2 10 4 2][1 2 3 1 2 1 1 1 2 1]
__
| |___________
| |
| _______|
| |
| |
| |_
| ___|
| |
| |_____________
| _______________|
| |______
| ____|
| |
| _|
|__|
[2 14 6 8 4 18 2 10 4 2][1 2 3 1 2 1 1 1 2 1]
-> (swap e reverse) -> meu formato de entrada:[1 2 1 1 1 2 1 3 2 1][2 4 10 2 18 4 8 6 14 2]
Respostas:
Retina,
169150113 bytesA contagem de bytes assume a codificação ISO 8859-1.
O código contém um espaço à direita em uma nova linha à direita.
Formato de entrada:
Por exemplo:
Experimente online!
fonte
JavaScript (ES6) 174
A única parte crítica é a fileira horizontal que une 2 partes de larguras diferentes, com a barra vertical no lado direito que pode estar no meio ou na extremidade direita.
TESTE
fonte
Python 3,
230223222217 bytesObrigado a @StewieGriffin @KevinLau por sua ajuda
Resultados
fonte
a=1;b=2
)m=' _'
em vez dem=[' ','_']
salvar como 5 bytes.Ruby 191
Golfe pela primeira vez, também é meu primeiro dia com Ruby, então provavelmente não é a coisa mais elegante do mundo, mas serve?
fonte