Dada uma corda cujo comprimento é divisível por 4, faça um triângulo como demonstrado abaixo.
Se a string for abcdefghijkl
, então o triângulo seria:
a
b l
c k
defghij
Se a string for iamastringwithalengthdivisiblebyfour
, então o triângulo seria:
i
a r
m u
a o
s f
t y
r b
i e
n l
gwithalengthdivisib
Se a string for thisrepresentationisnotatriangle
, então o triângulo seria:
t
h e
i l
s g
r n
e a
p i
r r
esentationisnotat
Notas
- A sequência será composta apenas por caracteres de
a
atéz
. - Espaços em branco à esquerda / à direita e novas linhas são permitidos desde que a forma não seja quebrada.
- Uma lista de strings como saída é permitida.
Isso é código-golfe . A resposta mais curta em bytes vence. Aplicam-se brechas padrão .
✂
s fazem?GH↙→→↖⊕÷Lθ⁴θ
vai trabalhar na próxima vez eu empurro carvão05AB1E , 23 bytes
Experimente online!
Explicação
fonte
JavaScript (ES6),
119117108105 bytesFormatado e comentado
Casos de teste
Mostrar snippet de código
fonte
C #, 260 bytes
Realmente queria usar
SetCursorPosition
.Ungolfed:
fonte
Mathematica, 164 bytes
entrada
fonte
[[1]]
pode ser substituído#&@@
.@(...)
, apenas faça[...]
. E eu não testei, mas você provavelmente pode salvar outro byte, fornecendoColumn
um nome (ou talvez até paraColumn[#,Alignment->Center]&
evitarq
) e colocando todas as variáveis restantes no primeiro argumento do externoColumn
(para salvar os parênteses).Python 3 , 120 bytes
Primeiro golfe, achei que eu poderia aprender um pouco de Python ao longo do caminho.
Experimente online!
Explicação:
O primeiro caractere é impresso por si próprio após
len(a)//4
espaços, e o primeiro e o últimoi
caracteres, começando pelo segundo, são impressos, separados por2*i - 1
espaços.Finalmente, a substring restante é impressa.
fonte
p=print
e, em seguida, basta usarp
os trêsprint
segundos que você usar.//
(divisão do piso) pode ser substituído por/
.GNU sed ,
178158132 + 1 = 133 bytes+1 byte para
-r
sinalizador.Experimente online!
Explicação
Nas revisões anteriores , usei muitos bytes lidando com matemática, casos especiais e limpeza, embora intuitivamente eu tivesse certeza de que eles poderiam ser evitados. Desde então, consegui fazê-lo, principalmente.
Suponha que tenhamos a entrada
abcdEFGHIJKLMnop
. As letrasEFGHIJKLM
estarão na parte inferior do triângulo, então eu as coloquei em maiúsculas como uma ajuda visual.Primeiro, preparamos a entrada colocando o primeiro caractere em sua própria linha (precedido por um espaço) e inserindo um cursor (
;
) antes do último caractere:Agora temos:
Agora, em um loop, faremos algumas coisas até a última linha: 1. Copie os espaços da linha anterior e insira-os após o primeiro caractere, mais dois; 2. Mova o último caractere para a direita após os espaços, seguido por uma nova linha; e 3. Mova o cursor três caracteres para a esquerda.
Aqui está o resultado de cada iteração:
Você pode ver a pirâmide começar a tomar forma. Você também pode ver para que serve o cursor: em cada iteração, ele moveu para a esquerda três caracteres e, quando não há mais três caracteres à esquerda, ele interrompe o loop, que acontece exatamente quando atingimos o "fundo" da pirâmide.
Agora vamos fazer uma operação semelhante, mas ao contrário. Em um loop, copiaremos os espaços do início da linha com o cursor para o início da linha anterior, mais um, no processo de mover o cursor até essa linha.
Aqui estão algumas iterações e o resultado final:
Já terminamos agora, exceto alguns caracteres extras: A
;
e espaço extra na primeira linha e dois espaços no "meio" da pirâmide nas próximas três linhas. Uma simples substituição se livra deles:Tudo feito!
fonte
Ruby , 106 bytes
Experimente online!
fonte
Python 2 ,
100 9796 bytesExperimente online!
Explicação:
Uma coisa inteligente que eu fiz aqui foi preencher a entrada com um espaço no final, de modo que o primeiro caractere emparelhe com ela e isso possa ser inserido no loop (e desde que os espaços em branco à direita sejam permitidos)
O número de loops a seguir está associado
len(word)//4
. Na etapa final, toda a seqüência restante é impressa (isso forma a base do triângulo). Os espaços seguem um padrão simples; o primeiro conjunto de espaços continua diminuindo em 1, enquanto o segundo conjunto de espaços aumenta em 2.fonte
a
sempre será um múltiplo de 4.//
->/
C 225 bytes
explicado
fonte
C #, 172 bytes
Experimente online!
fonte
Oitava, 87 bytes
* Em uma máquina Windows, o código acima produz o resultado correto, no entanto, adicionei algum código para corrigi-lo.
Explicação:
Experimente online!
fonte
Haskell , 136 bytes
Experimente online!
fonte
PHP> = 7.1, 122 bytes
Sandbox do PHP Online
PHP> = 7.1, 124 bytes
Sandbox do PHP Online
fonte
AWK , 129 bytes
Experimente online!
Eu acho que isso poderia ser um pouco mais jogado, só que não estou vendo.
fonte
Retina , 99 bytes
Experimente online! Explicação: Os dois primeiros estágios geram as duas primeiras linhas, mas depois disso não é necessário revestimento especial e cada linha subseqüente pode ser gerada automaticamente:
fonte
Java 8, 213 bytes
Explicação:
Experimente aqui.
fonte
Perl 5 , 76 bytes
74 bytes de código +2 para
-F
Experimente online!
fonte