Brachylog , 12 bytes

7

Medusa , 12 11 9 bytes

\P$'*
  i

Pruébalo en línea!

Explicación

El programa anterior es equivalente al siguiente pseudocódigo funcional:

\            P      $       i        '*
map_prefixes(print, reshape(input(), '*'))

El $(remodelar) crea una cadena de Nasteriscos. \Pcrea una función que toma una lista (o cadena) y pasa cada uno de sus prefijos a P(imprimir). Por lo tanto, esta opción se imprime sucesivamente cuerdas de 1a Nasteriscos.

Martin Ender
fuente

Respuestas:

7

R, 45 bytes

Para el enfoque de bucle:

for(i in 1:scan())cat(rep("*",i),"\n",sep="")
Billywob
fuente
6

Brachylog , 12 bytes

yke:"*"rj@w\

Pruébalo en línea!

Esto supone que una nueva línea final es aceptable

Explicación

yk                The range [0, …, Input - 1]
  e               Take one element I of that range
   :"*"rj         Juxtapose "*" I times to itself
         @w       Write that string followed by a new line
           \      False: backtrack to another element of the range

Sin nueva línea final, 15 bytes

-:"*"rj:@[f~@nw

Pruébalo en línea!

Este funciona tomando todos los prefijos de "*" × Input.

Fatalizar
fuente
6

Haskell, 35 38 bytes

Lista de comprensión gracias a nimi:

f x=unlines[[1..n]>>"*"|n<-[1..x]]

Versión antigua:

f 0=""
f n=f(n-1)++([1..n]>>"*")++"\n"

Versión alternativa:

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g
Craig Roy
fuente
Puede usar en ([1..n]>>"*")lugar de replicate n'*'guardar un byte. También cuento solo 39 bytes.
Laikoni
Bonita versión alternativa! Sin embargo, creo que el recuento de bytes sigue siendo uno y debería ser 38. (Ver, por ejemplo, aquí ) El problema podría ser la nueva línea después de la f 0=""cual se cuenta como un byte, pero se muestra como dos bytes / caracteres en algunos editores de texto.
Laikoni
¡Gracias! Ahora veo que inicialmente estaba agregando una nueva línea final cuando contaba los caracteres. ¡No cometerás ese error otra vez!
Craig Roy
2
Puede cambiar a una lista por comprensión: f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi
6

Pyth, 7 bytes

VQ*\*hN

Perdí un byte gracias a @ETHproductions Pruébalo en línea

utilizando la técnica de @ PIetu1998

6, bytes

j*L*\*S
Dignissimus - Spammy
fuente
¡Buena respuesta! Se puede reemplazar "*"con \*.
ETHproductions
@ETHproductions Nunca supe de eso, ¡gracias!
Dignissimus - Spammy
Puede eliminar otro byte con un mapa. j*L\*S(incluido el Srango, multiplique cada uno *Lpor "*" \*, join por nueva línea) Pyth inserta una Q implícita al final.
PurkkaKoodari
jm*\*hTambién es de 6 bytes.
hakr14
6

2sable , 24 11 bytes

>G')Ç>çJN×,

Pruébalo en línea!

¡Y no hay signos de asteriscos! Golfó del 24 al 11 gracias a @Emigna .

Explicación:

>G')Ç>çJN×,
>            Push input+1
 G           For N in range (1,input+1)
  ')Ç>çJ     Push '*' by getting ascii code for ')' and adding 1
        Nx,  Print '*' repeated N times
Geno Racklin Asher
fuente
1
Algunos consejos. õVYIno afecta su código de ninguna manera y puede eliminarse. 1+es el mismo que >. Si crea el asterisco en el bucle, también puede eliminarlo UX. El uso en ×lugar del bucle interno ahorra aún más bytes. Sin cambiar el método, puede reducirlo a 11 bytes o menos.
Emigna
1
¡Agradable! Lo editaré pronto
Geno Racklin Asher
¿Podría agregar una explicación?
Buffer Over Read
¡Código maravilloso, felicidades por obtener la recompensa! El bot de la comunidad parece haber otorgado solo 25 y no los 50 originales, creo, porque olvidé otorgar la recompensa antes de la fecha límite, lo siento.
Buffer Over Read
1
No te preocupes por eso. Simplemente contento de alcanzar la marca de 100 repeticiones. @TheBitByte
Geno Racklin Asher
6

Brain-Flak 75 Bytes

Incluye +3 para -A

{(({})[()]<{({}[()]<(((((()()()){}()){})){}{})>)}{}((()()()()()){})>)}{}

Pruébalo en línea!


Explicación:

{(({})[()]<                                                        >)}
#reduce the top element by one until it is 0 after doing the following
#Push this element back on to act as a counter for the next step.
#(counts down from input to 0 we'll call this counter)

           {({}[()]<                          >)}
           #reduce the top element by one until it is 0 after doing the following
           #(counts down from counter to 0)

                    (((((()()()){}()){})){}{})  
                    #push 42 (the ASCII code for *)

                                                 {}
                                                 #pop the counter used to push
                                                 #the right number of *s

                                                   ((()()()()()){})
                                                   #push a 10 (newline)

                                                                      {}
                                                                      #pop the null byte
Riley
fuente
esto incluye un byte nulo en la salida? No creo que esté permitido ...
Destructible Lemon
No, me refiero a un byte nulo
Destructible Lemon
@DestructibleWatermelon Sí, supongo que sí. Solución fácil sin embargo. Gracias.
Riley
6

Dyalog APL , 8 bytes

'*'⍴⍨¨⍳

Matrificar la lista que consiste en

'*' la cuerda "*"

⍴⍨ remodelado por

¨ Cada uno de

los enteros 1 a través del argumento.

TryAPL en línea!

Adán
fuente
A mí me parecen 8 bytes.
Erik the Outgolfer
1
si puede ser un solo byte:(,⍕⊢)⌸⍳
NGN
@ngn ¡Eso es muy inteligente! Publícalo como tuyo. De hecho, puede contarlo como un solo byte que escribe 7 bytes<sup>SBCS</sup>.
Adám
5

V , 8 bytes

Àé*hòlÄx

Pruébalo en línea!

DJMcMayhem
fuente
Oh si Àé hòlÄ!
Jonathan Allan
2
@ JonathanAllan Hola, al menos es más legible que Jelly. (Para mí);)
DJMcMayhem
La página de códigos de Jelly está bastante bien organizada, creo. Echa un vistazo a la revisión de la página Atoms de la wiki hecha recientemente por Lynn.
Jonathan Allan
3
@ JonathanAllan Sí, lo creería. Puede que no lo parezca, pero los mnemónicos de V están bien organizados debido a las teclas que usa para escribirlos en vim. Entonces, mi solución en vim-key lingo es <M-@><M-i>*h<M-r>l<M-D>x(m significa meta, que significa alt). Todos esos son mnemónicos bastante buenos para lo que hace el comando.
DJMcMayhem
5

JavaScript (ES6), 34 bytes

f=x=>x?f(x-1)+`
`+'*'.repeat(x):''
Huntro
fuente
5

Perl 6 , 23 bytes

{.put for [\~] '*'xx$_}

(Si se permite que la salida sea una lista de "líneas" sin líneas nuevas, .put for se puede eliminar)

Explicación:

# bare block lambda with implicit parameter 「$_」
{
  .put            # print with trailing newline
    for           # for every one of the following
      [\~]        # produce using concatenation operator
        '*' xx $_ # list repeat '*' by the input
}

(Consulte la documentación producesi no comprende lo que [\~] ...está haciendo)

Brad Gilbert b2gills
fuente
5

Perl 5, 22 20 bytes

say"*"x$_ for 1..pop

Ejecútelo con el -Einterruptor para obtener say.

$ perl -E 'say"*"x$_ for 1..pop' 5
*
**
***
****
*****

Escrito como un programa completo, se vería así:

use strict;
use feature 'say';

# get the argument
my $limit = pop @ARGV;

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}
  • shifte popimplícitamente trabajar en@ARGV (la lista de argumentos) fuera de los subs
  • ..es el operador de rango
  • say incluye una nueva línea
  • xes un operador para repetir cadenas y se explica en perlop
simbabque
fuente
No estoy seguro si necesito bytes adicionales para el cambio de línea de comando.
simbabque
Creo que la -Ebandera cuenta como 1 byte extra.
ETHproductions
¿Qué hay de tomar el número como entrada en lugar de parámetro? perl -E 'say"*"x$_ for 1..<>' <<< 5
manatwork
@manatwork, sí, eso funcionaría. Sin embargo, no soy bueno contando. No estoy seguro si eso está permitido.
simbabque
1
-Ees gratis (ya que reemplaza lo -eque sería necesario de todos modos). Si realmente desea tomar el número de la línea de comando (¿por qué no, incluso si <>es 1 byte más corto y permitido), debe usarlo en poplugar de shift(2 bytes más corto)! De todos modos, bienvenido en PPCG, ¡feliz de verte jugando al golf!
Dada
5

Perl, 19 bytes

-4 bytes gracias a @Ton Hospel y su revisión de la solución.

eval"s//*/;say;"x<>

Necesita bandera -E(o -M5.010) libre para ejecutarse. Toma un número de entrada:

perl -E 'eval"s//*/;say;"x<>' <<< "5"
Dada
fuente
1
Puede hacer evalla misma longitud que la forsolución (usando en <>lugar de pop) coneval"s//*/;say;"x<>
Ton Hospel
@TonHospel Ineed, ¡bien! ¡Gracias!
Dada
5

J, 11 8 bytes

¡Guardado 3 bytes gracias a millas!

]\@#&'*'

Aquí hay una descomposición:

(]\@#&'*') x
x (]\@#) '*'
]\ (x # '*')

Ahora, este último se lee como "los prefijos ( ]\) de la cadena que consiste en xcopias de '*'". Observar:

   5 ]\@# '*'
*
**
***
****
*****
   ]\ 5# '*'
*
**
***
****
*****
   ]\ 5 # '*'
*
**
***
****
*****
   ]\@#&'*' 5
*
**
***
****
*****

Caso de prueba

   f =: ]\@#&'*'
   f 3
*
**
***
   f 5
*
**
***
****
*****
   f 1
*
   f 2
*
**
   f &. > ;/1+i.10
+-+--+---+----+-----+------+-------+--------+---------+----------+
|*|* |*  |*   |*    |*     |*      |*       |*        |*         |
| |**|** |**  |**   |**    |**     |**      |**       |**        |
| |  |***|*** |***  |***   |***    |***     |***      |***       |
| |  |   |****|**** |****  |****   |****    |****     |****      |
| |  |   |    |*****|***** |*****  |*****   |*****    |*****     |
| |  |   |    |     |******|****** |******  |******   |******    |
| |  |   |    |     |      |*******|******* |*******  |*******   |
| |  |   |    |     |      |       |********|******** |********  |
| |  |   |    |     |      |       |        |*********|********* |
| |  |   |    |     |      |       |        |         |**********|
+-+--+---+----+-----+------+-------+--------+---------+----------+

Soluciones antiguas de 11 bytes

'*'#~"+1+i.

Esto es equivalente

'*' #~"0 1 + i.

1 + i.es el rango [1, x]. Luego, '*' #~"0aplicado a este rango formas (elemento) copias de '*'.

Programa de bonificación:

[:#&'*'\#&1

Esta es una bifurcación limitada #&'*'\aplicada al resultado #&1de la entrada. #&1da una matriz de xunos y #&'*'\formas '*'a los prefijos de esta matriz.

Casos de prueba

   f1 =: '*'#~"+1+i.
   f2 =: [:#&'*'\#&1
   f1 1
*
   f2 2
*
**
   f1 3
*
**
***
   f2 4
*
**
***
****
   f2 5
*
**
***
****
*****
   f1 5
*
**
***
****
*****
   (f1;f2)3
+---+---+
|*  |*  |
|** |** |
|***|***|
+---+---+
   f1;f2
f1 ; f2
   (f1;f2)5
+-----+-----+
|*    |*    |
|**   |**   |
|***  |***  |
|**** |**** |
|*****|*****|
+-----+-----+
   (f1;f2)10
+----------+----------+
|*         |*         |
|**        |**        |
|***       |***       |
|****      |****      |
|*****     |*****     |
|******    |******    |
|*******   |*******   |
|********  |********  |
|********* |********* |
|**********|**********|
+----------+----------+
Conor O'Brien
fuente
También puede obtener los prefijos de la cadena de ncopias de '*'8 bytes utilizando]\@#&'*'
millas
@miles: y otra versión de 9 bytes:'*'"0\@i.
Jonás
5

Vim, 22 , 18 pulsaciones de teclas

O <esc>J:h r<cr>lyEZZ<C-v>{@"

Gran crédito a @Udioica por llegar a una increíble respuesta vim que . Esta respuesta no contiene asteriscos, con la esperanza de ganar la recompensa.

Explicación:

La entrada se escribe antes que el resto del programa. A Udioica se le ocurrió este increíble truco. La escritura <n>O <esc>creará una pirámide de espacios y una línea vacía, siempre que haya :set autoindenthabilitado. Esta opción se activa de forma predeterminada en vim 8 y neovim, aunque no en versiones anteriores de vim. Como esto también crea una línea extra, usamosJ para unir esta línea con la siguiente, lo que efectivamente elimina la línea debajo de nosotros.

Ahora, en este punto, necesitamos reemplazar todos estos espacios con asteriscos. Si no me preocupara usar asteriscos en mi código, solo seleccionaría visualmente todo <C-v>{y escribiríar* , lo que reemplaza cada carácter de la selección con un asterisco. Pero no puedo hacer eso.

Entonces abrimos las páginas de ayuda a :h r. Lo interesante de esto es que en la ventana vim, esta página se muestra como:

                            r
r{char}         Replace the character under the cursor with {char}.
                ...

Con el cursor en la primera 'r'. Sin embargo, el archivo en sí contiene este texto:

                            *r*
r{char}         Replace the character under the cursor with {char}.
                ...

Muy conveniente Entonces nos movemos sobre un carácter con l, y tiramos el texto r*con yE([y] ank al [E] nd de esta palabra).

Para cerrar este búfer, usamos el acceso directo para guardar un archivo ZZ. Ahora, seleccionamos visualmente nuestros espacios y ejecutamos el texto extraído como si lo hubiéramos escrito al hacerlo @". Esto funciona porque "@" ejecuta el siguiente registro como pulsaciones de teclas vim y "es el registro predeterminado para la extracción".

DJMcMayhem
fuente
¿Te importaría explicar cómo funciona?
corvus_192
@ corvus_192 He agregado una explicación más extensa, además de jugar golf un poco más.
DJMcMayhem
¿No debería agregarse el tamaño del archivo de datos al recuento de bytes?
aross
@aross el tamaño del archivo de ayuda? No, porque este archivo se instala junto con vim y es una característica predeterminada.
DJMcMayhem
5

C, 47 46 45 43 bytes

Toma información de la línea de comando

f(n){for(n&&f(n-1);~n;putchar(n--?42:10));}

Básicamente si n no es 0 recurse en n-1. en la parte superior de la recursión donde n es 0, solo imprime una nueva línea, el bucle for termina cuando n es -1 o ~ n es cero; de lo contrario, imprime ASCII 42, que es '*'. Pruébalo en ideone

C ++ 58 Bytes + 19 para incluir iostream es 77

#include<iostream>
int f(int n){for(n&&f(n-1);~n;std::cout<<(n--?"*":"\n"));}

main(c,v)char**v;
{
    f(atoi(v[1]));
}

a.exe 3
*
**
***
cleblanc
fuente
Para mí parece funcionar con &&: n?f(n-1):0n&&f(n-1).
manatwork
@manatwork Gracias amigo. guardar otro byte
cleblanc
En ideone, la impresión de 2 triángulos muestra al final hay un '\ n' más: * ** *** * ** *** **** ***** Digo el caso 0 el final del caso de revursion, imprima uno \ n más
RosLuP
@RosLup Sí, está imprimiendo una nueva línea inicial y final. Creo que el OP dijo que estaba bien en sus comentarios.
cleblanc
4

Retina , 14 bytes

El recuento de bytes asume la codificación ISO 8859-1.

.+
$**
.
$`$&¶

Pruébalo en línea!

Explicación

.+
$**

Convierta la entrada Nen Nasteriscos.

.
$`$&¶

Reemplace cada asterisco con todo hasta ese asterisco (este es el $`$&) y un salto de línea (este el ).

Martin Ender
fuente
4

Cubix , 22 bytes

?(.;I:^;/-.@o;(!\>'*oN

¡Pruébalo en línea! Emite una nueva línea final.

Al principio no estaba seguro de que pudiera encajar en un cubo de 2, pero al final funcionó bien:

    ? (
    . ;
I : ^ ; / - . @
o ; ( ! \ > ' *
    o N
    . .

Agregaré una explicación cuando tenga tiempo, con suerte más tarde hoy.

ETHproducciones
fuente
¿Explicación en cualquier momento pronto? : P
FlipTack