Crie uma função que, dada uma série de linhas n
, faça a bigA
.
- A barra horizontal de
bigA
deve estar na linha do meio ou a menor das duas, sen
for uniforme - Suponha uma fonte monoespaçada para saída
A saída deve ser uma string (ou similar, por exemplo, matriz de caracteres) com quebras de linha claras para quebrar as linhas e com espaço em branco correto para preenchimento à esquerda (você pode assumir que \ t são 4 espaços). Pode haver qualquer espaço em branco à direita.
Exemplos
n = 1
A
n = 2
A
AAA
n = 3
A
AAA
A A
n = 4
A
A A
AAAAA
A A
n = 5
A
A A
AAAAA
A A
A A
Isso é inspirado em Criar um "H" a partir de "H" s menores
Respostas:
05AB1E , 13 bytes
Código:
Usa a codificação 05AB1E . Experimente online!
Explicação:
Tela de pintura
Provavelmente eu deveria documentar a tela um pouco mais (e muitas outras funções), mas isso basicamente resume tudo. A tela possui 'modos' diferentes, com base nos tipos de parâmetros fornecidos. O comando canvas possui três parâmetros: <length> <string> <direction> .
Como os parâmetros de comprimento e direção são listas, ele 'fecha' essas listas para criar um conjunto de instruções a serem executadas. O parâmetro string é apenas a letra A , portanto, esse é o caractere de preenchimento usado por todas as instruções. A tela interpreta isso como o seguinte conjunto de instruções (para a entrada 7):
As instruções são traduzidas da seguinte maneira:
Se nada foi emitido, 05AB1E gera automaticamente o resultado da tela.
fonte
Carvão ,
1715 bytesExperimente online! Link é a versão detalhada do código. Explicação:
Entrada
n
.Imprima a barra horizontal do grande
A
. (Para números pares, on+1
th se sobrepõe ao lado direito.)Mover para o topo do grande
A
.Imprima ambos os lados do grande
A
.fonte
Python 2 , 80 bytes
Experimente online!
Divida a saída desejada no espaço em branco esquerdo, no espaço em branco
A
mais a esquerda ou no meioA
e na direitaA
. Calcule a parte do meio usando fatias em uma sequência fixa. Isso permite usar da mesma maneira para gerar a primeira linha.fonte
Stax , 15 bytes
Execute e depure
Descompactado, não jogado e comentado, o programa se parece com isso.
Execute este
fonte
JavaScript (ES6), 77 bytes
Este código-fonte tem uma forma de retângulo ! Oh espere ... desafio errado: - /
Experimente online!
fonte
Python 3.6 , 79 bytes ou 73 bytes
Usando as strings f para alinhar partes horizontais da letra:
Com
\b
usado para excluir umA
(possivelmente trapaça):fonte
Java (JDK 10) , 124 bytes
Experimente online!
fonte
J , 65 bytes
Experimente online!
Pode ser reduzido em aprox. 12 bytes, simplesmente tornando o verbo tácito, mas tenho problemas para fazê-lo.
Explicação:
3 : '...'
denota um verbo explícito de uma linhay
é o argumento=/~@i.
cria uma matriz de identidade com o tamanho do argumento([:(}:@|."1,.])
precede a matriz de identidade com sua cópia espelhada com os últimos elementos de cada linha eliminados.1(...)}(...)
muda para 1 as posições em seu argumento certo, selecionado pelo esquerdo([:(<@;]+i.@+:)<.@-:)
- prepara a seleção, fazendo o seguinte:' A'{~
torna um espaço nos lugares de 0 e 'A' onde há 1fonte
Tela ,
1713 bytesExperimente aqui!
-4 bytes graças a dzaima !
fonte
Ruby , 66 bytes
Experimente online!
Retorna como matriz de linhas
fonte
SOGL V0.12 , 12 bytes
Experimente aqui!
Explicação:
fonte
Japonês
-R
,2019 bytesTente
Explicação
Alternativo
(Na esperança de que isso possa me ajudar a identificar algumas economias!)
fonte
ç h'AUz)¬íp ®i'A êÃû
p
por²
e também tem 19 bytes.Ruby , 73 bytes
Experimente online!
fonte
Geléia ,
23201918 bytesExperimente online!
=þ`
cria uma matriz de identidade de tamanhon
.L‘HĊƲ
localiza o índice de linha da barra horizontal¦
escolhendo essa linha e aplicandoo\
a ela que cria a barra.U
inverte cada linha para que não tenhamos um "A" invertido eŒB
(palindromize; vetoriza) forma a segunda metade do "A".ị⁾A
(com um espaço que está sendo cortado na formatação) substitui0
s por espaços e1
s porA
s.fonte
T-SQL ,
182177 bytesPrimeira versão (com 182 bytes):
A versão acima funciona até @ n = 9.
Aqui está outra versão, que funciona até @ n = 23, mas possui 2 bytes extras:
Ungolfed:
fonte
Haskell ,
989795 bytes e 109 bytesDuas abordagens muito diferentes. Primeiro (95 bytes):
e segundo (109 bytes):
Experimente aqui!;Experimente a versão modificada aqui!Experimente a terceira versão aqui!
fonte
l
como operador infix .m True='A'
um ser encurtado param b|b='A'
.Python 2 , 70 bytes ou 65 bytes
A lista de strings é um resultado aceitável, como @Budd afirmou nos comentários.
Experimente online!
Solução aparentemente barata, usando
\b
. Parece divertido no TIO, no console ele faz o trabalho.Experimente online!
fonte
Javascript, 124 bytes
Uma solução bastante ingênua, deu a chance de praticar as habilidades de js.
for(i=-1,p=" ".repeat(n-1)+"A ";++i<n;console.log(i-~~(n/2)?p:p.slice(0,i)+"A".repeat(n)),p=p.slice(1,n)+" "+p.slice(n-1)){}
Desembalado
fonte
Perl 5
-n
, 57 bytesExperimente online!
fonte
Python 3 ,
93, 88 bytesExperimente online!
-3 por @ovs usando f-string
fonte