Hoje vamos construir uma pirâmide com letras! Aqui está um exemplo de pirâmide de letras para as 5 primeiras letras:
Escreva as 5 primeiras letras com um espaço entre, primeiro ascendente e depois descendente.
A B C D E D C B A
Faça o mesmo nas quatro primeiras letras da linha acima, mas com dois espaços à esquerda extras:
A B C D C B A A B C D E D C B A
Repita o mesmo passo até que a última linha seja apenas 'A'
A A B A A B C B A A B C D C B A A B C D E D C B A
Repita as etapas dois e três descendo em vez de subir:
A A B A A B C B A A B C D C B A A B C D E D C B A A B C D C B A A B C B A A B A A
Esse mesmo padrão pode ser estendido até 26 caracteres. Seu desafio é escrever um programa ou função que use um número inteiro como entrada e produza a pirâmide de letras correspondente. Você pode optar por usar caracteres maiúsculos ou minúsculos. Você sempre pode assumir que a entrada será um número inteiro [1, 26]
e a saída pode ser qualquer formato razoável para uma string 2d. Por exemplo, uma sequência com novas linhas, uma matriz de caracteres, imprimindo em um arquivo etc. Cada linha pode ter espaços à direita e, opcionalmente, é possível gerar uma nova linha à direita.
Aqui estão alguns exemplos de entradas / saídas:
1:
A
2:
A
A B A
A
3:
A
A B A
A B C B A
A B A
A
5:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
13:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
26:
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X Y X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W X W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V W V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U V U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T U T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S T S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R S R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q R Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P Q P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O P O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N O N M L K J I H G F E D C B A
A B C D E F G H I J K L M N M L K J I H G F E D C B A
A B C D E F G H I J K L M L K J I H G F E D C B A
A B C D E F G H I J K L K J I H G F E D C B A
A B C D E F G H I J K J I H G F E D C B A
A B C D E F G H I J I H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
Como sempre, este é o código-golfe, de modo que lacunas padrão se aplicam e a resposta mais curta em bytes vence!
fonte
Respostas:
Python,
184 174169 bytesEdit: salvou 5 bytes graças a @ nedla2004
fonte
g
em três linhas. 2.) Atribuarange
a uma variável. Você pode ver os dois aqui . (Nota: Antesdef f(x,y,z):
há um espaço, antes dofor
circuito há um guia.range
que você possa substituir?R((a-i))
emR(a-i)
eR((a-i-1))
emR(a-i-1)
, não pode?for
loops dentro da compreensão da lista.print
.05AB1E , 13 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
MATL ,
2524 bytesExperimente online!
Alternativas mais longas:
1Y20hiZv&+G-t0>*1&!t0*hTe)
(26 bytes)Zv&+64+G-t64>*l2&Y"tZyP:o*c
(27 bytes)Explicação
fonte
V , 45 bytes
Experimente online!
Isso acabou sendo muito menos golfe do que eu esperava, então não vou postar uma explicação ainda. Espero que eu possa reduzi-lo um pouco mais primeiro. Como de costume, aqui está um hexdump:
fonte
J, 34 bytes
Pega o número como entrada e retorna uma matriz de caracteres 2D.
Explicação
Caso de teste decomposto
Vamos tentar isso com entrada
5
.Casos de teste
fonte
Gelatina , 13 bytes
TryItOnline!
Quão?
fonte
Pyke, 12 bytes
Experimente aqui!
Desativar avisos para saída especificada
fonte
C #,
266263262261245238235232 bytesGolfe:
Ungolfed com comentários:
Experimente: http://rextester.com/WIL67940
Retorna a lista de strings. Cada sequência contém uma linha de saída.
Fiz isso por diversão e treinamento. Sei que ganhar qualquer código de golfe com C # está fora de alcance.
EDIT1: Interpolação de cadeia alterada para
+
operador.EDIT2:
c <= 'A' + i
=>c < 'B' + i
EDIT3: Trocado
char
comvar
.EDIT4: Tipo de retorno alterado de
void
paraList
.EDIT5: Remoção de variável desnecessária.
EDIT6: Nova maneira de separar as metades da linha.
EDIT7: @Kaspar Kjeldsen, obrigado.
fonte
C,
124123 bytesEconomizando 1 byte graças a Mukul Kumar
Atualmente não consigo convencer a transformar o loop duplo em um único, deixarei assim por enquanto.Na verdade, isso é maiorEntão, eu apenas deixei o loop aninhado.
Usa a norma de Manhattan para obter a forma de diamante.
Ungolfed:
fonte
j==2*n
comj-2*n
e trocar os? ()
valores com:()
valorPython,
158154140139 bytesEste é o meu primeiro post, então seja gentil! Eu fiz uso pesado de [:: - 1] para reverter seqüências de caracteres, então talvez haja alguma otimização a ser feita lá. Comentários bem-vindos.
EDITAR% S:
Obrigado @Rod pelo ponteiro do link útil para o tópico de golfe de código Python e também por me lembrar que as letras precisam de espaços entre eles. Agradeço também ao @wec pelas dicas gerais sobre remoção de espaços.
fonte
=
), depois de vírgulas e antes do parêntese de abertura na instrução print. A indentação do Python pode ter qualquer nível, desde que seja consistente, para que você possa salvar 3 caracteres, independentemente da sua declaração de impressão, apenas um espaço em vez de quatro. Essas são as economias fáceis que posso ver.z
apenas uma vez, não precisa usar uma variável, basta colocar os*2-1
diretamente nacenter
função Apenas um detalhe, a saída precisa ter espaços entre as letras,' '.join
logo após a impressão deve ser suficiente (mas você precisa refazês*2-1
-lo para obter o valor certo).range
e para[:]
é0
, assim você não precisa colocá-lo explicitamenteFlak cerebral, 630 + 3 = 633 bytes
Isso requer que o
-A
sinalizador seja executadoExperimente Online
Este não é um ótimo golfe, mas esse desafio é bastante difícil no Brain-Flak
fonte
Pitão, 23 bytes
Experimente online
fonte
TSQL, 261 bytes
Consulta de uma linha - sem loop
Infelizmente, o violino consome os espaços no início das linhas de saída. Os espaços estarão lá se executados no estúdio de gerenciamento do SQL Server
Violino
fonte
Ruby,
137 115 10084 bytesObrigado ao manatwork pelos comentários.
fonte
0..n-1
0...n
n>0?…:""
.Baixar 93 , 175 bytes
Experimente online!
Provavelmente não muito bem jogado. Ah bem. Isso já era bastante difícil com o befunge:
Boa sorte para descobrir como funciona! Eu mal sei.
fonte
C #, 199 bytes
Como sempre, o C # não é muito uma linguagem de golfe, mas eu prefiro o código "legível" muito mais do que o código esotérico. Também fiz isso por diversão :)
Aqui está uma versão não destruída, para que você possa entender facilmente o que eu fiz:
(Eu acho que isso pode ser muito otimizado ..)
fonte
Java, 213 bytes
Ungolfed:
fonte
Java, 394 bytes
Normalmente faço c #, mas é bom misturar tudo ...
Golfe:
Ungolfed:
Teste:
fonte
R,
1009787 bytes(Atualização:
scan()
para entrada; abusada (x-1): 1 == x: 2-1.)Não é tão ruim para uma das linguagens de palavras-chave pela aparência (aquelas de caracteres especiais sempre serão melhores).
fonte
PHP,
122116 bytesexiste um caminho mais curto?
fonte
JavaScript (ES6), 121 bytes
Onde
\n
representa o caractere literal de nova linha. Saídas em minúsculas.fonte
Lote, 269 bytes
A linha 2 termina em 25 espaços; isto significa que quando o índice do alfabeto fica negativo, esses quadrados simplesmente permanecem em branco.
fonte