Você deve imprimir este texto exato:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Especificações
- Novas linhas extras à direita são permitidas no final da saída.
- Espaços extras à direita (U + 0020) são permitidos no final de cada linha, incluindo as novas linhas extras à direita.
- Você pode usar todas as letras minúsculas em vez de todas as maiúsculas, mas não pode imprimir parcialmente minúsculas e parcialmente maiúsculas.
- Você pode retornar o texto como uma saída de função em vez de imprimi-lo em um programa completo.
Pontuação
Como esse é um triângulo, e um triângulo possui 3 lados e 3 é um número pequeno, seu código deve ser pequeno em termos de contagem de bytes.
code-golf
kolmogorov-complexity
alphabet
Freira Furada
fonte
fonte
Respostas:
Vim, 37 bytes
lenda
fonte
:h<_↵↵↵YZZP
), gravo uma macro (qq…q
) que corta repetidamente uma letra da linha superior, faz duas cópias para aumentar o triângulo verticalmente e depois anexa a letra cortada a todas as linhas para crescer horizontalmente. Repito essa macro mais 24 vezes para desenhar o triângulo completo.Logotipo,
232 207196190 bytesAlguém disse triângulos?
Tire sua bússola e transferidor, e vamos fazer isso da maneira gráfica. A geometria usa um triângulo equilátero para alinhar os resultados. Eu já tinha um triângulo isósceles, mas envolvia muitas casas decimais. Essa alteração também compactou a saída, reduzindo a quantidade de preparação da tela e a alteração da fonte que eu precisava fazer.
Eu usei o intérprete online Calormen para elaborar este. Se você não tiver espaço suficiente na tela, isso vai acabar, mas você também pode mexer em alguns números para cuidar disso. Eu usei o modo de tela cheia "F11" no meu navegador.
O
r
procedimento desenha uma linha den
caracteres. O caractere é determinado automaticamente, dependendo de quantos segmentos ele deve usar. Ob
parâmetro informa quanto girar temporariamente para que as letras estejam apontando na direção certa. Ol
parâmetro determina a distância linear entre as letras.O
t
procedimento passa para a próxima posição e chama ar
função quatro vezes para criar um triângulo, girando quando apropriado. Liguei duas vezes para o lado vertical porque isso levou menos bytes do que chamá-lo uma vez com tratamento especial. O final do procedimento posiciona a tartaruga para o início do próximo triângulo, um passo acima.Z
é um caso especial, apenas imprimimos diretamente e giramos como se tivéssemos acabado de terminar um triângulo. Finalmente,t
é chamado 25 vezes.fonte
Haskell, 58 bytes
Define uma função
t
que retorna a saída como uma sequência.fonte
Geléia ,
1613 bytesGraças a @LeakyNun por jogar fora 3 bytes!
Experimente online!
Como funciona
fonte
Python, 74 bytes
Uma função Python 2 que imprime e não aceita argumentos. A idéia principal é gerar o padrão triangular de retorno e retorno com recursão. Primeiro, considere esta função mais simples que imprime as letras 'A' até 'Z' e volta para 'A':
A função imprime primeiro "A" (código de caractere 65), depois volta a imprimir "B" (66) e assim por diante para "Z" (90). A partir daí, ele pára de se repetir. No caminho de volta à pilha recursiva, ele imprime qualquer caractere
t
impresso na mesma camada, de "Y" a "A".O código principal faz o mesmo, exceto que se acumula na
s
sequência de letras até o momento e imprime a sequência para cima e para baixos+s[-2::-1]
.Graças ao xsot por 2 bytes.
No Python 3, a mesma coisa é um byte mais curto (73 bytes), colocando tudo em uma linha.
fonte
f(x=66,s='A')
. Isso permite que você atualizes
a chamada de função em vez do corpo da função.brainfuck,
1733121119 bytesVersão um pouco mais legível:
Explicação possivelmente para vir.
fonte
05AB1E ,
20 13 126 bytesEconomizou 2 bytes graças a Adnan.
Economizou 6 bytes graças ao Magic Octopus Urn e algumas novas funcionalidades de idioma.
Experimente online!
Explicação
fonte
Œ26£
para.p
, que é o comando prefix. Além disso, você pode alterarD,
para=
, que imprime sem aparecer.gF,
!Â
é muito bom e um recurso realmente interessante.û
é mais novo que o desafio e tornaria essa resposta não competitiva.J,
262322 bytesExplicação
fonte
f=:,1}.|.
tente isto #Python 3, 97 bytes
Ideone it!
fonte
'\n'.join(a+a[-2::-1])
Ruby, 71 bytes
Experimente em repl.it
fonte
> <> , 60 bytes
Experimente online!
fonte
C,
272247234230144137 bytes:( Salvei muitos bytes (
272 -> 230
) no meu método anterior, graças às ótimas dicas e truques de golfe de sigalor ! )( Economizou quase 100 bytes (
230 -> 144
) mudando para um método melhor. )Minha primeira resposta
C
. Eu comecei a aprender sozinho recentemente, então vamos ver como vai.C em ação! (Ideona)
fonte
main()
o tipo de retorno e até o#include <stdio.h>
. O GCC (e também sites como o Ideone) está bem com isso. Em seguida, você pode terceirizar as definições de variáveis para a lista de parâmetros de uma função. Vamos nosfor(int i=65;...
tornarfor(i=65...
e mudarmain()
paramain(i)
. Faça o mesmo para todas as outras variáveis int (o GCC usa como padrão os tipos ausentesint
).main()
paramain(i)
?i
variável na inicialização do loop for, precisa declará-la em outro lugar. E porque (pelo menos em C) os parâmetros de uma função podem ser usados como variáveis normais, não deve haver problema. Btw, qual compilador você está usando?C
em Ideone. Estou recebendo vários<variable> undeclared
erros.JavaScript (ES6), 81 bytes
fonte
Mathematica 59 bytes
fonte
//Column
do final e prefixar seu código comColumn@
obras.〚
e〛
como bytes únicos. Duvido que exista uma página de código de byte único e que também seja suportada pelo Mathematica imediatamente. Eles teriam três bytes em UTF-8, para que não salvassem nada além da planície[[...]]
. Também não tenho certeza de quão legítimoColumn
é, pois ele é exibido apenas como uma lista de linhas em um notebook Mathematica. A execução desse código a partir de um arquivo de script não exibirá nada. No entanto,Print/@
é o mesmo número de bytes e funciona nos dois casos.[what you see](actual link)
. Ex.[Example Link](https://www.example.com)
, que é exibido como link de exemploDyalog APL, 18 bytes
fonte
R,
63 6159 bytesPrestativamente
LETTTERS[0]
não retorna nenhum personagem.Edit: perdeu um graças a @leakynun
Edit: mais dois agradecimentos a @plannapus
fonte
\n
TSQL, 159 bytes
Violino
fonte
Javascript (usando a biblioteca externa enumerável), 135 bytes
Link para a biblioteca: https://github.com/mvegh1/Enumerable
Explicação do código: Crie um intervalo de ints começando em 1, para uma contagem de 51. Para cada um, escreva uma linha de acordo com o pred complexo. Faça alguma magia JS com variáveis globais e cache ... e pronto. Para cada int no WriteLine, estamos criando o intervalo de entradas à esquerda e armazenando no global "g", e String Joining (Write) com
""
delimitador e mapeando cada int para o mapeamento String para o código int char. Em seguida, concatizamos o lado direito, fazendo a reversão dessa sequência (e pulando o primeiro elemento, porque isso corresponderá ao último elemento da ordem original ...), escrevendo com a mesma lógica. EDIT: Atualizados os internos de gravação na biblioteca. Uma sequência vazia gravará uma sequência vazia em vez de nula agora. Isso também eliminou 15 bytes da respostafonte
import sympy
ou estãofrom sympy import*
no topo. As respostas do Bash + x são diferentes porque você só precisa instalar o x , não ativá-lo de alguma forma.sympy
,numpy
,scipy
, etc. todo o tempo.Powershell,
6152 bytesAgradecimentos a TimmyD por salvar 9 bytes!
Faz um loop através dos valores ASCII para letras maiúsculas para frente e depois para trás. Para cada número, isso cria uma matriz dos primeiros números X, remove o número X-1 e adiciona o reverso dos primeiros números X, que são todos convertidos em caracteres e agrupados em uma sequência.
fonte
65..90..65
com um capricho antes sem sucesso. Acho que esqueci que podia adicionar os intervalos juntos.Queijo Cheddar ,
10296796967 bytes17 bytes graças ao Downgoat e inspiração para mais 10.
O fato de que seqüências de caracteres podem concatenar, mas não matrizes, significa que eu teria que converter os dois intervalos em seqüências de caracteres, concatenar e depois converter novamente em matrizes.
Além disso, o fato de
vfuse
produzir um newliens principal significa que eu precisaria gerar a primeira linha manualmente e depois concatenar com o resto.@"
como uma díade (função de dois argumentos) pode converter diretamente em string, mas não funciona para o intervalo invertido (se o primeiro argumento for maior que o segundo).O alcance era meio inclusivo. Após a correção, tornou-se inclusivo.
Uso
Cheddar, 55 bytes (não concorrente)
Na versão mais recente com todas as correções, a resposta é:
mas foi feito após o desafio.
fonte
@"(1|>26)
pode ser1@"26
String.letters
pode ser(65@"91)
String.letters.slice(0,i)
talvez pudesse ser65@"(66+i)
C, 93 bytes
Ligue
f()
sem argumentos.Experimente em ideone .
fonte
VBA, 94 bytes
Ligue na janela Imediata com? T
Apenas para explicar o que está acontecendo: uso a função Abs duas vezes, para refletir a rotação do alfabeto e o comprimento da linha. É adequado para a tarefa devido ao valor extremo único em ambos os casos, que corresponde ao cruzamento zero da variável pré-Abs.
Como um conjunto simples de comandos na janela Imediata do VBA, em vez de um programa ou função, o seguinte precisaria de 72 bytes:
(com agradecimentos a @GuitarPicker)
fonte
Function T:
, terminam com:?T
(embora só funcionaria uma vez, porque depois que você precisa para redefinir T de "?" - mas quem precisa de mais do que um destes triângulos)?
como você ir com;
.Python,
7371 bytesObrigado a @xnor pela recursão
Explicação
x
é o valor ascii da próxima letra do alfabetos
é um acumulador para o alfabetot
é uma linha no triângulo (ou seja,s
+s backwards
)t
se o alfabeto estiver pronto (ou seja, estamos no centro)t+f(...)+t
com:x
incrementados
anexado com a próxima letrat
redefinir paras
+s backwards
+\n
Atualizar
\n
condicional inicial (+1) e abreviado (-3) graças a @xnorfonte
t
passando para o próximo loop. Há uma nova linha extra líder;x=66,s='A''
se livra disso. O gabinete base pode ser reduzido parax/92*t or
.HTML + CSS, 884 caracteres
(763 caracteres HTML + 121 caracteres CSS)
Apenas expansão Leaky Nun 's comentário sobre MonkeyZeus ' s resposta . (Embora eu possa interpretar mal o comentário ...)
fonte
Braquilog ,
3729 bytesCréditos a Fatalize por sua assistência por toda parte.
4 bytes graças a Fatalize, e inspiração para outros 4 bytes.
Experimente online!
Predicado 0 (predicado principal)
Predicado 1 (predicado auxiliar)
Basicamente, isso cria um palíndromo a partir da string especificada.
fonte
,A
no Predicado 1 porh
, economizando um byte.:1:2yt.
com:2&.
e adicionando um!
(pontos de corte escolha) no final do predicado 2.[char:char]y
para gerar os sustringsabcd…
em vez de~c[A:B]
R,
127125 bytesNão completamente satisfeito com esta solução, especialmente os dois
for
loops, mas não pôde vir com algo melhor!LETTERS
contém as letras maiúsculas.Ungolfed:
ifelse
é uma maneira mais curta de cancelar o envioif... else...
e funciona da seguinte maneira:ifelse(condition,action if TRUE, action if FALSE)
Uma solução de outros 125 bytes:
fonte
Java 131 bytes
Sem usar String (131 bytes)
Codegolfed
Com String (173 bytes)
Codegolfed
Graças a manatwork e Kevin Cruijssen
fonte
d!=-1
pord>-1
, o mesmo para k. (BTW, você esqueceu-se de corrigir a versão golfed.)i+=k==1?1:-1
pode seri+=k
eSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
pode serSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Assim, no total, torna-se ( 131 bytes ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
brainfuck, 79 bytes
Formatado:
Experimente online
fonte
Sesos , 27 bytes
Experimente online! Marque Debug para ver o código SBIN gerado.
Montagem Sesos
O arquivo binário acima foi gerado montando o seguinte código SASM.
fonte
/// , 208 bytes
Não vencendo, é claro, mas aqui está, anterior a Martin Ender ...
fonte