Água-viva , 12 11 9 bytes
\P$'*
i
Explicação
O programa acima é equivalente ao seguinte pseudocódigo funcional:
\ P $ i '*
map_prefixes(print, reshape(input(), '*'))
O $
(remodelar) cria uma sequência de N
asteriscos. \P
cria uma função que pega uma lista (ou string) e passa cada um de seus prefixos para P
(print). Assim, este sucessivamente imprime cordas 1
da N
asteriscos.
Martin Ender
fonte
fonte
([1..n]>>"*")
vez dereplicate n'*'
salvar um byte. Eu também conto apenas 39 bytes.f 0=""
qual é contada como um byte, mas mostrada como dois bytes / caracteres em alguns editores de texto.f x=unlines[[1..n]>>"*"|n<-[1..x]]
.Pyth, 7 bytes
Acabei com um byte graças a @ETHproductions Experimente online
usando a técnica de @ PIetu1998
6 bytes
fonte
"*"
por\*
.j*L\*S
(incluindo oS
intervalo, multiplique cada um*L
por "*"\*
, ouj
por nova linha) Pyth insere um Q implícito no final.jm*\*h
também é de 6 bytes.2sable ,
2411 bytesExperimente online!
E nenhum sinal de asterisco! Jogou de 24 a 11 graças ao @Emigna .
Explicação:
fonte
õVYI
não afeta seu código de forma alguma e pode ser removido.1+
é o mesmo que>
. Se você criar o asterisco no loop, também poderá removerUX
. Usar em×
vez do loop interno economiza ainda mais bytes. Sem alterar o método, você pode reduzir para 11 bytes ou menos.Brain-Flak 75 Bytes
Inclui +3 para
-A
Experimente online!
Explicação:
fonte
Dyalog APL , 8 bytes
↑
matricular a lista que consiste em'*'
a corda "*"⍴⍨
remodelado por¨
cada um⍳
os inteiros 1 através do argumentoTryAPL online!
fonte
⌸
pode ser um byte único:(,⍕⊢)⌸⍳
7 bytes<sup>SBCS</sup>
.V , 8 bytes
Experimente online!
fonte
Àé
hòlÄ
!<M-@><M-i>*h<M-r>l<M-D>x
(m significa meta, que significa alt). Todos esses são bons mnemônicos para o que o comando faz.JavaScript (ES6), 34 bytes
fonte
Perl 6 , 23 bytes
(Se a saída puder ser uma lista de "linhas" sem novas linhas
.put for
possam ser removidas)Explicação:
(Consulte a documentação para
produce
se você não entender o que[\~] ...
está fazendo)fonte
Perl 5,
2220 bytesExecute-o com o
-E
interruptor para obtersay
.Escrito como um programa completo, ficaria assim:
shift
epop
trabalhar implicitamente@ARGV
(a lista de argumentos) fora dos subs..
é o operador de alcancesay
inclui uma nova linhax
é um operador para repetir strings e é explicado no perlopfonte
-E
bandeira conta como 1 byte extra.perl -E 'say"*"x$_ for 1..<>' <<< 5
-E
é gratuito (pois substitui o-e
que seria necessário de qualquer maneira). Se você realmente deseja pegar o número na linha de comando (por que não, mesmo que<>
seja 1 byte menor e permitido), você deve usar empop
vez deshift
(2 bytes mais curto)! De qualquer forma, seja bem-vindo ao PPCG, feliz em vê-lo jogando golfe!Perl, 19 bytes
-4 bytes graças a @Ton Hospel e seu retrabalho da solução!
Precisa de sinalizador gratuito
-E
(ou-M5.010
) para executar. Pega um número da entrada:fonte
eval
o mesmo comprimento que afor
solução (usando em<>
vez depop
) comeval"s//*/;say;"x<>
J,
118 bytesEconomizou 3 bytes graças a milhas!
Aqui está uma decomposição:
Agora, este último lê como "os prefixos (
]\
) da string que consiste emx
cópias de'*'
". Observar:Caso de teste
Soluções mais antigas de 11 bytes
Isso é equivalente
1 + i.
é o intervalo[1, x]
. Em seguida,'*' #~"0
aplicado a esse intervalo, forma cópias (elemento) de'*'
.Programa de bônus:
Este é um garfo com tampa
#&'*'\
aplicado ao resultado da#&1
entrada.#&1
fornece uma variedade dex
unidades e#&'*'\
formas formas'*'
para os prefixos dessa matriz.Casos de teste
fonte
n
cópias de'*'
por 8 bytes utilizando]\@#&'*'
'*'"0\@i.
Teclas Vim,
22, 18Crédito enorme para @Udioica por ter encontrado uma resposta impressionante do vim que eu expandi. Esta resposta não contém nenhum asterisco, na esperança de ganhar a recompensa.
Explicação:
A entrada é digitada antes do restante do programa. Udioica veio com esse truque incrível. A digitação
<n>O <esc>
criará uma pirâmide de espaços e uma linha vazia, desde que você tenha:set autoindent
ativado. Esta opção é ativada por padrão no vim 8 e no neovim, embora não nas versões mais antigas do vim. Como isso também cria uma linha extra, usamosJ
para associá-la à próxima, o que efetivamente remove a linha abaixo de nós.Agora, neste ponto, precisamos substituir todos esses espaços por asteriscos. Se eu não estivesse preocupado com o uso de asteriscos no meu código, selecionaria visualmente tudo
<C-v>{
e digitariar*
, que substituem cada caractere da seleção por um asterisco. Mas eu não posso fazer isso.Então, abrimos as páginas de ajuda para
:h r
. O interessante sobre isso é que, na janela do vim, esta página é exibida como:Com o cursor no primeiro 'r'. No entanto, o próprio arquivo realmente contém este texto:
Bastante conveniente. Então, passamos um caractere com
l
, e puxamos o textor*
comyE
([y] ank para o [E] e esta palavra).Para fechar esse buffer, usamos o atalho para salvar um arquivo
ZZ
. Agora, selecionamos visualmente nossos espaços e executamos o texto arrancado como se o tivéssemos digitado@"
. Isso funciona porque "@" executa o seguinte registro como pressionamentos de tecla vim e "é o registro padrão para puxar.fonte
C,
47464543 bytesRecebe entrada da linha de comando
Basicamente, se n não for 0, recursão em n-1. na parte superior da recursão, em que n é 0, apenas imprime uma nova linha; o loop for termina quando n é -1 ou ~ n é zero; caso contrário, imprime o ASCII 42, que é '*'. Experimente em ideone
C ++ 58 bytes + 19 para incluir o iostream é 77
fonte
&&
:n?f(n-1):0
→n&&f(n-1)
.Retina , 14 bytes
A contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
Explicação
Transforme a entrada
N
emN
asteriscos.Substitua cada asterisco por tudo, inclusive esse asterisco (este é o
$`$&
) e um avanço de linha (este¶
).fonte
MATL,
98 bytes1 byte salvo graças a @Luis
Experimente Online
fonte
Cubix , 22 bytes
Teste online! Gera uma nova linha à direita.
No começo, eu não tinha certeza de que conseguiria encaixar isso em um cubo 2, mas no final funcionou bem:
Vou acrescentar uma explicação quando tiver tempo, espero hoje mais tarde.
fonte