Aqui está uma arte ASCII de uma interseção de quatro vias:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
(Observe como as estradas horizontais têm 3 linhas de altura, enquanto as estradas verticais têm 5 colunas de largura. Isso ocorre por razões estéticas, devido à fonte retangular.)
Seu desafio é produzir essa arte ASCII. No entanto, como tenho certeza de que todos sabem, nem todo cruzamento tem uma estrada que sai em todas as direções. Essa interseção específica ocorre NESW
, mas algumas interseções podem ocorrer, por exemplo NW
:
| | |
| |
| | |
| |
| | |
-----+-----+
| |
- - -| |
| |
-----+-----+
Ou pode ser SWE
:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
Ou pode até seguir E
, apenas uma única direção (embora você dificilmente possa chamar isso de interseção , mas tente evitar ser excessivamente pedante):
+-----+-----
| |
| |- - -
| |
+-----+-----
Você precisa escrever um programa ou função que possa gerar facilmente qualquer uma dessas combinações. Mais especificamente, seu desafio é escrever um programa ou função que siga uma sequência de instruções, consistindo em NESW
, como entrada e produza ou retorne essa arte ASCII de um cruzamento com estradas apontando nessas direções. Essas direções podem aparecer em qualquer ordem, mas a entrada não irá conter quaisquer caracteres, exceto para N
, E
, S
, ou W
. Se desejar, você pode solicitar que as entradas sejam minúsculas, mas você deve especificar isso na sua resposta. Você também pode assumir que todas as entradas conterão pelo menos uma direção.
O último exemplo tinha espaços à esquerda em cada linha, porque não há estrada indo para o oeste. Se você não tem uma estrada que vai para o oeste, esses espaços à esquerda são opcionais. Este:
+-----+-----
| |
| |- - -
| |
+-----+-----
Também seria uma saída aceitável. Da mesma forma, se N
ou S
se foi, linhas vazias no local são opcionais. Uma nova linha final é permitida e os espaços finais são permitidos desde que a saída seja visualmente a mesma.
Você pode receber entrada e saída em qualquer formato razoável, como STDIN / STDOUT, argumentos de linha de comando, arquivos, argumentos de função / valores de retorno, etc.
Como de costume, isso é código-golfe , então tente obter a resposta mais curta possível em qualquer idioma que você usar!
IO de amostra:
NESW:
| | |
| |
| | |
| |
| | |
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
| | |
| |
| | |
| |
| | |
NS:
| | |
| |
| | |
| |
| | |
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
S:
+-----+
| |
| |
| |
+-----+
| | |
| |
| | |
| |
| | |
EW:
-----+-----+-----
| |
- - -| |- - -
| |
-----+-----+-----
SE:
+-----+-----
| |
| |- - -
| |
+-----+-----
| | |
| |
| | |
| |
| | |
E
, por exemplo)? As linhas em branco à esquerda e à direita são permitidas se não houverN
ouS
?