Introdução
Para encurtar a história: alguns dias atrás, acidentalmente, comecei a tricotar uma meia e a estrutura lógica dos pontos simples me levou à ideia: por que não tricotamos apenas uma meia em ASCII?
Entrada
A entrada é um número inteiro N no intervalo [2,30]
.
Resultado
A saída é uma meia, obviamente.
Estrutura
Como usaremos somente pontos simples, você usará apenas v
para um ponto descendente e >
um ponto à direita. Deixe-me explicar a estrutura completa com um exemplo para N=8
:
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
- O primeiro bloco é a parte superior. Tem a largura
N
e a alturaN*1.5
- Depois o calcanhar começa. Você subtrai um
v
por linha do lado direito até ter aN/2
largura. Em seguida, adicioneN/2
linhas com a larguraN/2
abaixo para finalizar as malhas descendentes. Observe que ele fornece um total deN/2 + 1
linhas com a larguraN/2
primeira parte:
vvvvvvvv //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv // N*1.5 times
vvvvvvv // reduce
vvvvvv
vvvvv
vvvv // till here
vvvv // repeat N/2 times
vvvv
vvvv
vvvv
- Agora as malhas laterais começam. Você começa com a primeira linha reduzida, preenche
>
até ter a larguraN
e adicione mais duas. Continue esse processo, incluindo a primeira linha comN/2
largura - Preencha as linhas abaixo desse nível e adicione
N*1.5
tempos>
a esse - Deixe as partes externas como estão e adicione na linha abaixo da primeira e sobre o lase mais duas
>'s
até terminar
segunda parte:
vvvvvvvv
vvvvvvv>>> //fill to N and add two >
vvvvvv>>>>>> //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>> //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>> //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>> //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
Regras
Trailing novas linhas estão ok.
Você pode escolher entre maiúsculas ou minúsculas V
mas deve ser consistente.
Isso é código-golfe portanto o código mais curto em bytes vence.
Casos de teste
N=2
vv
vv
vv
v>>>
v>>>>>>
N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>
N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
v
ouV
alternadamente? Eu vou assumir por um momento quev
é a única permitida, mas permitindo queV
efetuará a contagem de bytesRespostas:
Pitão - 93 bytes
Explicação:
Você pode tentar aqui!
fonte
Mathematica, 104 bytes
Função sem nome, recebendo um número inteiro positivo como entrada e retornando uma string (com uma nova linha à direita). Observe que a nova linha entre as duas linhas de código acima faz parte do código. O trabalho principal é realizado pela função
c
, cuja definição não destruídacria uma tabela de listas, cada uma consistindo em vários
"v"
s em uma linha seguida por vários">"
s seguidos por uma nova linha. Felizmente, o intervalo#3
para o externoTable
pode ter um nome de variável, que pode ser referido nas expressões#1
e#2
; isso permite que a funçãoc
seja chamada com argumentos constantes e variáveis. O resto é apenas computação, e o operador de junção de cadeias""<>
simplifica as listas aninhadas que surgem de graça.fonte
Python, 3,5
183177 bytesExplicação recebida.
Experimente Online!
fonte
n,v=int(input()),'v'
:? Então não economiza nada.Groovy, 168 bytes
Este é um fechamento sem nome. A abordagem é completamente semelhante à minha resposta do Python 3.5 .
Experimente Online!
fonte
Lote, 279 bytes
Nota: a segunda linha termina em um espaço. O lote tem problemas com o eco de
>
s em variáveis, então eu tenho que: a) usar um substituto; b) chamar uma sub-rotina para ecoar a string corrigida. Na verdade, tenho três sub-rotinas:a
é usado para o calcanhar. Umv
é removido a cada vez e três>
s são adicionados. Dois>
s extras são adicionados para que a sub-rotina possa entrar nab
sub - rotina.b
é usado para a parte inferior do pé. Dois>
s são removidos de cada vez. A sub-rotina então entra nac
sub - rotina.c
imprime a linha atual da meia, substituindo o caractere de espaço reservado, para que a>
impressão seja correta.A quarta linha lida com a largura da perna, enquanto a quinta linha lida com seu comprimento. A sétima linha lida com o comprimento do pé, enquanto a oitava linha lida com a metade superior da altura do pé, adicionando dois
>>
a cada linha após a impressão. Isso funciona para tamanhos de meias que são múltiplos de 4 e é feito um ajuste para outros tamanhos de meias, para que a linha mais longa não seja repetida.fonte
PHP, 229 bytes
uma abordagem bastante preguiçosa
imprime uma nova linha principal. Corra com
-nr
.demolir
fonte
dc , 269 bytes
Tudo bem, bem ... isso é enorme . Não foi fácil, vou lhe dizer isso, com todas as referências de registro, comparações, macros, falta de capacidade de manipulação de cordas, etc. Mesmo assim, eu me diverti montando isso, e isso é tudo o que realmente importa, certo ? ;)
Experimente Online!
fonte