Escreva uma função ou programa nomeado que aceite um único inteiro N e imprima (para STDOUT) ou retorne (como uma sequência) as primeiras N barras da espiral abaixo, começando com a barra vertical no centro e espiralando no sentido horário para fora.
_______________
/ _____________ \
/ / ___________ \ \
/ / / _________ \ \ \
/ / / / _______ \ \ \ \
/ / / / / _____ \ \ \ \ \
/ / / / / / ___ \ \ \ \ \ \
/ / / / / / / _ \ \ \ \ \ \ \
/ / / / / / / / \ \ \ \ \ \ \ \
| | | | | | | | | | | | | | | |
\ \ \ \ \ \ \___/ / / / / / / /
\ \ \ \ \ \_____/ / / / / / /
\ \ \ \ \_______/ / / / / /
\ \ \ \_________/ / / / /
\ \ \___________/ / / /
\ \_____________/ / /
\_______________/ /
Você pode assumir que 0 <N <= 278. Sua saída não pode conter nenhum espaço em branco na frente do caractere mais à esquerda da espiral. Opcionalmente, você pode imprimir uma única nova linha à direita.
Para uma entrada de 10, a saída correta é
_
/ \
| |
\___/
Para uma entrada 2, a saída correta é
/
|
Para uma entrada de 20, a saída correta é
___
/ _ \
/ / \ \
| | | |
\___/ /
Uma saída que estaria incorreta porque o caractere mais à esquerda é precedido por espaço em branco é
___
/ _ \
/ / \ \
| | | |
\___/ /
O vencedor é o envio mais curto, em bytes.
|
) são apenas o caractere mais próximo que pode representar a reunião de a/
e\
.Respostas:
CJam - 156/147
Experimente online
Funciona com entradas de 1 a 378 inclusive (100 a mais que o necessário)
Usando o código CJam confirmado mais recente (disponível ao público em hg), mas não lançado, no momento em que este desafio foi lançado, a solução pode ser reduzida para 147 caracteres:
Explicação:
O programa constrói iterativamente todas as espirais como matrizes de [caractere xy] começando com
[0 0 '|]
, obtém a espiral solicitada, ajusta as coordenadas para que o mínimo x e y sejam 0, cria uma matriz de espaços (com o número correto de linhas e 50 colunas ) define os caracteres da espiral e junta as linhas com novas linhas.fonte
Python 2,
290.289Provavelmente é muito ruim, mas eu tentei: D
A saída contém espaços à direita, mas isso não é proibido na especificação.
Atualização: salvou 1 byte ao mudar
\n
para;
.fonte
JavaScript (ES6) 257
288 321Editar etapas mescladas.
Editar código Golfed mexendo para cortar um pouco mais de caracteres
Crie a saída iterativamente na matriz r, acompanhando a posição xey atual e a direção atual. Quando a posição x ou y é <0, toda a matriz r é reajustada.
Variáveis principais:
Ungolfed
Teste no console Firefox / FireBug (ou JSFiddle thx @Rainbolt)
Resultado
fonte
Pyth,
166165Acabei de traduzir minha resposta Python para Pyth, com minhas habilidades não-excelentes de Pyth. O vômito resultante está abaixo.
fonte