Dada uma letra do alfabeto inglês, sua tarefa é criar um alfabeto semia diagonal para a entrada.
Como construir um alfabeto semi-diagonal?
Breve descrição : Primeiro, você assume a posição da letra no alfabeto P
(aqui P
está 1 indexado). Em seguida, imprima cada letra até a entrada (inclusive) em uma linha, precedida P-1
e repita esse P
tempo da letra , intercalando com espaços.
Exemplos :
Dado
F
, seu programa deve gerar:UMA BB CCC DDDD EEEEE FFFFFF
Dado
K
, seu programa deve gerar:UMA BB CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH IIIIIIIII JJJJJJJJJJ KKKKKKKKKKK
Dado
A
, seu programa deve gerar:A
Regras
Você pode escolher caracteres minúsculos ou maiúsculos, mas isso deve ser consistente.
Você pode ter espaços estranhos da seguinte maneira:
- Um espaço à esquerda consistente (em cada linha).
- Uma nova linha à direita ou à direita.
- Espaços desnecessários à direita do texto.
A entrada e a saída podem ser obtidas por qualquer média padrão, e as brechas padrão se aplicam.
Você pode produzir uma lista de linhas, desde que você também forneça a versão ascii-art .
Isso é código-golfe , então o código mais curto em bytes vence!
Inspirado por este desafio .
Respostas:
Python 3 , 59 bytes
Experimente online!
Python 3 , 61 bytes
Experimente online! (link para a versão impressa)
fonte
Python 2 ,
636159 bytes-2 bytes graças a Rod. -2 bytes graças a Felipe Nardi Batista.
Experimente online!
fonte
C, 89 bytes
Experimente online!
fonte
PowerShell ,
4542 bytesExperimente online!
Pega a entrada como um caractere literal e, em seguida, passa pelas maiúsculas até esse ponto, cada iteração precede o número apropriado de espaços e, em seguida, o híbrido char \ space.
Economizou 3 bytes graças ao TessellatingHeckler.
fonte
"$args"
tanto isso, o que não funcionaria aqui, eu esqueci o[0]
método. HahaJavaScript (ES6), 85 bytes
Funciona em minúsculas para entrada e saída. Gera um espaço à esquerda e à direita em cada linha.
Demo
Mostrar snippet de código
fonte
`${s} `
pode ser substituído por(s+"")
para a poupança de um byte(s+" ")
, mas é o mesmo tempo.APL (Dyalog) , 26 bytes
Solicita caracteres escalares. Imprime a lista de linhas.
Experimente online! (possui versão artística ASCII em um byte adicional)
⎕
solicitação de entrada⎕A⍳
encontrar de ndex em um alfabeto⍳
primeiro que muitos ɩ ntegers(
…)¨
Aplique a seguinte função tácita a cada um:⊃∘⎕A
escolha o argumento da letra da letra do alfabeto A⊢⍴
remodelar ciclicamente para o comprimento do argumento' ',¨⍨
anexar um espaço a cada⍴∘'',
precede uma sequência de comprimento de argumento (preenchida com espaços)∊
ε nlist (achatar)A versão artística ASCII apenas tem um
↑
na esquerda; misture a lista de strings em uma tabela de caracteres.fonte
Perl 5 , 31 bytes
Código de 30 bytes + 1 para
-l
.Experimente online!
fonte
say
vez da-l
bandeira: Experimente online!-E
/-M5.01
, já useisay
bastante no passado e provavelmente abusaria do fato desay
ser uma alternativa aprint
um desafio de fonte restrita ou similar, talvez, mas, pelo bem de -3, continuarei como está por enquanto. Veja este meta post para um argumento justo . Aprecie a entrada!Dyalog APL, 38 bytes
Experimente online!
Quão?
⎕A↑⍨
- pegue o alfabeto até⎕A⍳⍵
- o caractere de entrada¨
- para cada caractere⍵,' '
- pegue o char e um espaço(...)⍴
- remodelar para2×y←⎕A⍳⍵
- duas vezes o índice do caractere no alfabeto(y/' ')
- e precede espaços de índice de caracteres↑
- depois achatarfonte
APL (Dyalog Classic) , 26 bytes
Experimente online!
Explicação
fonte
{}
, substituir⍵
por⎕
e afirmar que é um "programa completo" em vez de uma função. Isso tornaria sua solução a melhor (até agora).V ,
28, 26, 25, 23 bytes ( Competindo )Experimente online!
Observe que, embora eu esteja pensando em adicionar determinados recursos há muito tempo, esse desafio foi o que me convenceu a finalmente fazer isso.
A saída contém um espaço à esquerda em cada linha e uma nova linha à direita.
Hexdump:
Explicação:
fonte
05AB1E , 10 bytes
Experimente online!
-2 graças a Adnan .
Acrescente
»
para imprimir em linhas separadas.fonte
<
espaço em que um espaço à esquerda consistente está correto.A¹¡н«ðâƶāú
deve funcionar para 10 bytes¹¡
isso fará com que não funcione ... oh, é por isso que há um«
lá. : pR,
9488 bytes-6 bytes graças a Giuseppe
Ungolfed:
fonte
f
é uma linha e usar emmatch
vez dewhich
salvar um byte.Haskell,
5244 bytesRetorna uma lista de linhas.
Experimente online!
Edit: @jferard: salvou três bytes. Obrigado!
fonte
f k=[tail$[" ",s:" "]>>=(['A'..s]>>)|s<-['A'..k]]
tail$
.JavaScript (ES8), 92 bytes
Usa letras minúsculas. As linhas têm um espaço à esquerda e um à direita. Retorna uma matriz de linhas.
Snippet de teste
fonte
Casca , 13 bytes
Pega um caractere entre aspas simples como argumento de linha de comando, imprime o resultado em STDOUT. Experimente online!
Explicação
Estou explorando a maneira como Husk imprime listas de listas de strings: junte listas internas a espaços e listas externas a novas linhas.
fonte
05AB1E ,
151413 bytesGuardado 1 byte graças a Adnan
Experimente online! ou a versão artística Ascii
Explicação
fonte
A¹¡н«
em vez deADIk>£
funcionarA¹¡н
mas não considerei«
receber a última carta, por isso não era boa o suficiente: PAPL (Dyalog Unicode) , SBCS de 22 bytes
Experimente online!
Usos
⎕io←1
. Imprime um espaço à esquerda, o que é permitido.fonte
QBasic,
797472 bytesAgradecimentos a Taylor Scott pela economia de bytes (duas vezes!)
Usa maiúsculas. A entrada é pressionada com a tecla e não é ecoada na tela.
Explicação
Nós ciclo
i
de1
até a posição da carta limitante no alfabeto (1-based). Para cada umi
, passamos para a colunai
da tela usandoTAB
; depois,i
imprimimos ai
letra do alfabeto seguida de um espaço.fonte
INPUT$(1)
comando como um substituto direto para a variávelz$
para um delta de -2 bytesJapt
-R
,24231715 bytesProduz uma matriz, inclui uma nova linha principal e um espaço inicial e final em cada linha.
Teste-o
fonte
Carvão , 18 bytes
Experimente online!
fonte
E…·?θ⁺× κ⪫× κι
, o trabalho seria feito em 14 bytes.?
chegou lá.A
Acho que deveria ser . Oh espera, ohhhhh Entendo o que você quer dizer.Braingolf , 65 bytes
Experimente online!
Lowercase.
Contains 1 trailing space on each line, and a trailing newline at the end of output.
fonte
C# (.NET Core), 103 bytes
Try it online!
fonte
JavaScript,
10294 bytes2 bytes saved thanks to Neil
fonte
Retina, 51 bytes
Try it online! Explanation:
Duplicate the (first) letter.
Rotate it back 1 in the alphabet, or delete it if it's a duplicate
A
. Keep duplicating and rotating until we duplicateA
, at which point the deletion undoes the duplication and the loop completes.Replace each letter with a line with the letter padded on both sides.
Insert duplicate letters between all pairs of padding spaces to the right of existing letters.
fonte
Haskell, 57 bytes
Try it online!
fonte
Charcoal, 15 bytes
Try it online! Link is to verbose version of code. Explanation:
If extra padding was legal, this would work for 14 bytes:
Try it online! Link is to verbose version of code.
fonte
Mathematica, 70 bytes
lowercase
outputs a list
thanx @ngenisis for corrections
For ascii-art version place
Column@
at the beginningfonte
Excel VBA, 72 Bytes
Anonymous VBE immediate window function that takes input from cell
A1
and outputs to the VBE immediate windowfonte
Pyth, 17 bytes
Try it here (pretty print version).
How does this work?
hxG
- Takes the index of the input in the lowercase alphabet.<G
- Trims every character after the input from the alphabet..e
- Enumerated Map. Maps over the trimmed alphabet with the indexes ask
and the letters asb
.*kd
- Appendk
spaces.+bd
-b
+ a space (the current letter + space).*...hk
- Repeatk+1
times.+(...)(...)
- Concatenate.fonte
.e+*kdjd*bhk<GhxG
as 17 bytes as well.e+*kd*+bdhkhcGQ
C++ (gcc), 164 bytes
My first attempt after a long time lurking!
Ungolfed code below:
Try it online!
fonte