Dado um número n , gere as primeiras n colunas deste padrão:
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################ ...
A altura da coluna em (indexado 1) n é o número de 0
bits à direita na representação binária de n , mais um. Como resultado, a camada inferior tem todas as colunas preenchidas, a segunda camada a cada segunda coluna, a terceira camada a cada quarta coluna, etc.
Regras
- Você pode inserir e enviar através de qualquer método padrão.
- Você pode assumir que a entrada é um número inteiro entre 1 e 999, inclusive.
- A saída pode conter qualquer quantidade de espaço em branco, desde que o padrão esteja intacto.
- O padrão deve ser indexado em 1 e no mesmo formato mostrado aqui.
- Você pode usar qualquer caractere que não seja um espaço em branco no lugar de
#
, mas não pode alterar o caractere de espaço.
Casos de teste
1
#
2
#
##
3
#
###
4
#
# #
####
5
#
# #
#####
7
#
# # #
#######
32
#
# #
# # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
################################
Alguns casos de teste maiores podem ser encontrados aqui .
Pontuação
Isso é código-golfe , então o código mais curto em bytes em cada idioma vence.
#
?Respostas:
Python 2 , 54 bytes
Experimente online!
Imprime com muitos espaços em branco à esquerda. Cada linha da
i
contagem regressivan
repete um padrão de2**i-1
espaços seguido por a#
. Esse padrão é repetido até a largura da régua, que é a entradan
. Isso é feito multiplicando a sequência padrãon
e levando os primeirosn
caracteres com[:n]
.O padrão pode ser feito pela formatação de sequência para uma alternativa de comprimento igual.
Um método de fatiar bonito é mais longo.
fonte
Python 3 , 74 bytes
Experimente online!
fonte
a=2**len(bin(n))
para 72 bytesV ,
17, 16 bytesExperimente online!
Hexdump:
Agradecemos a @KritixiLithos por salvar um byte!
Esse algoritmo é terrivelmente ineficiente, mas deve funcionar em teoria para qualquer tamanho de entrada.
Ele funciona gerando as primeiras n iterações do seguinte padrão:
E depois cortando todas, exceto as primeiras n colunas. Como tal, isso produzirá uma tonelada de espaços em branco, mas o OP disse:
Explicação:
fonte
|
.JavaScript (ES6),
6158 bytesSalvei 1 byte graças a @ETHProductions e mais 2 bytes quando vi que qualquer caractere poderia ser usado.
Uma solução recursiva.
Casos de teste:
Mostrar snippet de código
Animação:
Mostrar snippet de código
fonte
c/2|0
parac>>1
salvar um byte.APL (Dyalog) , 21 bytes
Experimente online!
'# '[
… `] Indexe a string com⎕
obter entrada⍳
que muitos i ntegers2⊥⍣¯1
converter para binário, usando quantos dígitos forem necessários (um número em cada coluna )⊖
virar de cabeça para baixo∨⍀
redução OR cumulativa vertical0⍪
concatenar zeros na parte superior⊖
virar de cabeça para baixo (ou seja, voltar para cima)1+
adicione um (para indexação baseada em 1)fonte
Geléia ,
1110 bytesExperimente online!
1 byte salvo após o OP adicionou um relaxamento que o personagem não precisa ser
#
.fonte
Oitava, 45 bytes
Experimente no Octave Online!
Em vez de
'#'
impressões'!'
.fonte
PHP , 139 bytes
Experimente online!
fonte
Japonês ,
2017 bytesEconomizou 3 bytes graças a @Shaggy e @ETHproductions
Experimente online!
Explicação:
Entrada: 5
fonte
l
n&-n
para capturar apenas a final1
e todos à direita0
s emn
. Não tenho certeza se isso vai ajudar, mas vale a pena um tiro ...C,
84bytesUngolfed:
Teste com:
Explicação
Mais uma vez, a recursão ocupa menos caracteres em C que a iteração, portanto os dois loops são expressos como as duas invocações recursivas.
Além disso, C é uma ótima linguagem para fazer truques com expressões booleanas, permitindo a decisão de colocar um espaço em branco ou um
#
a ser expresso pela expressão32+3*!(i&m)
. Um espaço tem o valor ASCII de 32,#
é o ASCII 35, portanto, ficamos em branco se algum dos bits da máscara estiver definidoi
.fonte
int i,l,m
?Pyth , 15 bytes
Tente!
explicação
fonte
Python 2 , 47 bytes
Experimente online!
fonte
JavaScript (ES8), 71 bytes
A função padStart () foi introduzida no ECMAScript 2017!
Mostrar snippet de código
JavaScript (ES6), 77 bytes
Mostrar snippet de código
fonte
Mathematica, 69 bytes
fonte
( WESRRMICGSE ): 237 bytes
Bem. 'tempo de torcer.
Primeiro, substitua todos
COUNTA(R1C:R[-1]C,R[1]C:R[1024]C)+1
por simplesmente[i]
, para entrada. o token conta o número de células, sem incluir a si mesmo, que contêm uma fórmula e, em seguida, adiciona uma, para incluir a si mesma. Como o WESRRMICGSE arrasta uma fórmula de acordo com a entrada fornecida, esse token sempre resulta na entrada.temos:
Isso é muito mais legível. Você verá muito o
FLOOR(LOG([i],2),1)
token, o que significa simplesmente tomar a potência mais próxima de 2, que é menor que o[i]
número de entrada ( ). por exemplo:4->4, 5->4, 6->4, 7->4, 8->8 ...etc
. Vou substituir isso porGS[[i]]
Melhor. quebrando a cláusula if, estamos testando se a linha é menor ou igual a
GS[[i]]+3
, porque a altura de todas as réguas é igual a GS [[i]] + 1, isso seleciona as linhas que são iguais à altura da régua.+1
para linhas de indexação 1 e+1
novamente para o deslocamento WESRRMICGSE.O
FALSE
resultado gera uma célula vazia ("") e um resultado verdadeiro geraLEFT(REPT(REPT(" ",,FLOOR(POWER(2,LOG([i],2)-ROW()+2),1),1)-1) &"#",[i]),[i])
atualmente ainda editando, fique atento
fonte
Haskell ,
6462 bytesExperimente online! Exemplo de utilização:
f 10
.fonte
k, 33 bytes
Isso parece funcionar apenas no intérprete do AW .
A versão oK (que você pode experimentar on-line) parece ter um bug, exigindo uma pequena alteração para fazê-lo funcionar:
fonte
C #, 174 bytes
Este método possui dois parâmetros, uma entrada para o comprimento da régua e uma saída que é a régua como string.
Golfe:
Recuado:
Experimente online!
fonte
Func<int, string>
economia de alguns bytes?Carvão ,
2723 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 4 bytes mudando para
JumpTo
.fonte
JumpTo
(desculpe)J, 38 bytes
Nada bom. Lmk se a contagem de bytes estiver desativada - estou no meu telefone.
fonte
3
no início é a entrada ...0|.@|:'#'#"0~1#.2~:/\i.#:@,]
Java (OpenJDK 8) , 91 bytes
Experimente online!
Ungolfed:
fonte
CJam, 34 bytes
Meh.
fonte
C (gcc) , 70 bytes
Experimente online!
fonte
n+~x
vez den^x+1
Perl 5 , 60 + 1 (-n) = 61 bytes
Experimente online!
fonte