Brachylog , 12 octets

7

Méduse , 12 11 9 octets

\P$'*
  i

Essayez-le en ligne!

Explication

Le programme ci-dessus est équivalent au pseudocode fonctionnel suivant:

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

Le $(refaçonner) crée une chaîne d' Nastérisques. \Pcrée une fonction qui prend une liste (ou une chaîne) et transmet chacun de ses préfixes à P(print). Par conséquent, il imprime successivement les chaînes de 1à Nastérisques.

Martin Ender
la source

Réponses:

7

R, 45 octets

Pour l'approche en boucle:

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

Brachylog , 12 octets

yke:"*"rj@w\

Essayez-le en ligne!

Cela suppose qu'une nouvelle ligne est acceptable

Explication

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

Pas de nouvelle ligne, 15 octets

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

Essayez-le en ligne!

Celui-ci fonctionne en prenant tous les préfixes de "*" × Input.

Fataliser
la source
6

Haskell, 35 38 octets

Compréhension de liste grâce à nimi:

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

Ancienne version:

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

Version alternative:

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g
Craig Roy
la source
Vous pouvez utiliser ([1..n]>>"*")au lieu de replicate n'*'pour sauvegarder un octet. Je compte aussi que 39 octets.
Laikoni
Belle version alternative! Cependant, je pense que le nombre d'octets est toujours de un et devrait être de 38. (Voir par exemple ici ) Le problème pourrait être la nouvelle ligne après f 0=""laquelle est compté comme un octet, mais affiché comme deux octets / caractères dans certains éditeurs de texte.
Laikoni
Merci! Je vois maintenant que j’étais en train d’ajouter une fin de ligne lorsque je comptais les caractères. Ne ferez plus cette erreur!
Craig Roy
2
Vous pouvez passer à une compréhension de la liste: f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi
6

Pyth, 7 octets

VQ*\*hN

Bloqué un octet grâce à @ETHproductions Essayez-le en ligne

en utilisant la technique de @ PIetu1998

6, octets

j*L*\*S
Dignissimus - Spammy
la source
Bonne réponse! Vous pouvez remplacer "*"par \*.
ETHproductions 10/10/16
@ETHproductions Je n'en avais jamais entendu parler, merci!
Dignissimus - Spammy
Vous pouvez supprimer un autre octet avec une carte. j*L\*S( Splage incluse , multipliez chacune *Lpar "*" \*, join par newline) Pyth insère un Q implicite à la fin.
PurkkaKoodari
jm*\*hest également 6 octets.
hakr14
6

2sable , 24 à 11 octets

>G')Ç>çJN×,

Essayez-le en ligne!

Et aucun signe d'astérisque! Golfé du 24 au 11 grâce à @Emigna .

Explication:

>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
la source
1
Quelques astuces õVYIn'affecte en aucune manière votre code et peut être supprimé. 1+est le même que >. Si vous créez l'astérisque dans la boucle, vous pouvez également le supprimer UX. Utiliser ×au lieu de la boucle interne économise encore plus d'octets. Sans changer de méthode, vous pouvez le réduire à 11 octets ou moins.
Emigna
1
Agréable!
J'éditerai
Pourriez-vous ajouter une explication?
Tampon Over Read
Code merveilleux, félicitations pour obtenir la prime! Le bot communautaire ne semble en avoir attribué que 25, et non pas les 50 originaux, car j’ai oublié d’accorder la prime avant la date limite, désolé pour cela.
mémoire tampon a été
1
Ne t'inquiète pas pour ça. Je suis juste content d’atteindre la barre des 100 représentants. @TheBitByte
Geno Racklin Asher
6

Brain-Flak 75 Octets

Comprend +3 pour -A

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

Essayez-le en ligne!


Explication:

{(({})[()]<                                                        >)}
#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
la source
cela inclut un octet nul en sortie? Je ne pense pas que cela soit permis ...
Citron destructible
Non, je veux dire un octet nul
Citron destructible
@ DestructibleWatermelon Ouais, je suppose que oui. Solution facile cependant. Merci.
Riley
6

Dyalog APL , 8 octets

'*'⍴⍨¨⍳

matrifier la liste composée de

'*' la chaîne "*"

⍴⍨ remodelé par

¨ chacun des

les entiers 1 à travers l'argument.

TryAPL en ligne!

Adam
la source
Ressemble à 8 octets pour moi.
Erik the Outgolfer
1
si peut être un seul octet:(,⍕⊢)⌸⍳
ngn le
@ ngn C'est très intelligent! Affichez-le comme le vôtre. Vous pouvez en effet le compter comme un seul octet si vous écrivez 7 bytes<sup>SBCS</sup>.
Adám
5

V , 8 octets

Àé*hòlÄx

Essayez-le en ligne!

DJMcMayhem
la source
Oh oui Àé hòlÄ!
Jonathan Allan
2
@ JonathanAllan Hey, au moins c'est plus lisible que Jelly. (À moi);)
DJMcMayhem
La page de code de Jelly est, je pense, plutôt bien organisée. Découvrez la surcharge de la page Atoms du wiki réalisée récemment par Lynn.
Jonathan Allan
3
@ JonathanAllan Ouais, j'y crois. Cela ne ressemble peut-être pas à ça, mais la mnémonique de V est bien organisée à cause des clés que vous utilisez pour les taper dans vim. Donc, ma solution dans vim-key Lingo est <M-@><M-i>*h<M-r>l<M-D>x(m signifie méta, ce qui signifie alt). Ce sont tous de bons mnémoniques pour ce que fait la commande.
DJMcMayhem
5

JavaScript (ES6), 34 octets

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

Perl 6 , 23 octets

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

(Si la sortie est autorisée à être une liste de "lignes" sans nouvelles lignes .put for peuvent être supprimés)

Explication:

# 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
}

(Voir la documentation producesi vous ne comprenez pas ce qui [\~] ...se passe)

Brad Gilbert b2gills
la source
5

Perl 5, 22 20 octets

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

Exécutez-le avec le -Ecommutateur pour obtenir say.

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

Écrit comme un programme complet, il ressemblerait à ceci:

use strict;
use feature 'say';

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

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}
  • shiftet poptravaille implicitement sur @ARGV(la liste des arguments) en dehors de subs
  • ..est l' opérateur de gamme
  • say comprend une nouvelle ligne
  • xest un opérateur pour répéter des chaînes et est expliqué dans perlop
simbabque
la source
Pas sûr si j'ai besoin d'octets supplémentaires pour le commutateur de ligne de commande.
simbabque
Je crois que le -Edrapeau compte pour 1 octet supplémentaire.
ETHproductions 10/10/16
Qu'en est-il de prendre le nombre comme entrée au lieu de paramètre? perl -E 'say"*"x$_ for 1..<>' <<< 5
manatwork
@manatwork ouais cela fonctionnerait. Je ne suis pas bon à compter cependant. Je ne sais pas si c'est autorisé.
simbabque
1
-Eest gratuit (car il remplace -ece qui serait nécessaire de toute façon). Si vous voulez vraiment prendre le numéro à partir de la ligne de commande (pourquoi pas, même si <>est plus court d'un octet et autorisé), vous devriez utiliser popau lieu de shift(deux octets plus court)! En tout cas, bienvenue sur PPCG, heureux de vous voir jouer au golf!
Dada
5

Perl, 19 octets

-4 octets grâce à @Ton Hospel et son remaniement de la solution!

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

Nécessite un drapeau gratuit -E(ou -M5.010) à exécuter. Prend un nombre à partir de l'entrée:

perl -E 'eval"s//*/;say;"x<>' <<< "5"
Dada
la source
1
Vous pouvez faire evalla même longueur que la forsolution (utiliser à la <>place de pop) aveceval"s//*/;say;"x<>
Ton Hospel
@TonHospel Ineed, gentil! Merci!
Dada
5

J, 11 8 octets

Économisé 3 octets grâce aux miles!

]\@#&'*'

Voici une décomposition:

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

Maintenant, ce dernier se lit comme "les préfixes ( ]\) de la chaîne constituée de xcopies de '*'". Observer:

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

Cas de test

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

Solutions plus anciennes, 11 octets

'*'#~"+1+i.

C'est équivalent

'*' #~"0 1 + i.

1 + i.est la gamme [1, x]. Ensuite, '*' #~"0appliqué à cette plage forme des copies (élément) de '*'.

Programme de bonus:

[:#&'*'\#&1

Ceci est un fork plafonné #&'*'\appliqué au résultat #&1de l'entrée. #&1donne un tableau de xuns et des #&'*'\formes '*'aux préfixes de ce tableau.

Cas de test

   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
la source
Vous pouvez également obtenir les préfixes de la chaîne de ncopies de '*'pour 8 octets en utilisant]\@#&'*'
miles
@miles: et une autre version à 9 octets:'*'"0\@i.
Jonah
5

Vim, 22 , 18 frappes

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

Un grand crédit à @Udioica pour avoir fourni une réponse géniale sur vim que j'ai développée. Cette réponse ne contient aucun astérisque, dans l’espoir de gagner la prime.

Explication:

La saisie est tapée avant le reste du programme. Udioica a inventé ce truc génial. Taper <n>O <esc>créera une pyramide d’espaces et une ligne vide, tant que vous avez :set autoindentactivé. Cette option est activée par défaut dans vim 8 et neovim, mais pas les anciennes versions de vim. Comme cela crée également une ligne supplémentaire, nous avons l'habitude Jde joindre cette ligne à la suivante, ce qui supprime simplement la ligne située en dessous de nous.

Maintenant, à ce stade, nous devons remplacer tous ces espaces par des astérisques. Si je ne craignais pas d'utiliser des astérisques dans mon code, je sélectionnerais simplement le tout <C-v>{et le type r*, ce qui remplace chaque caractère de la sélection par un astérisque. Mais je ne peux pas faire ça.

Nous ouvrons donc les pages d’aide à :h r. La chose intéressante à propos de cela est que dans la fenêtre de vim, cette page est affichée comme:

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

Avec le curseur sur le premier 'r'. Cependant, le fichier lui-même contient ce texte:

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

Assez pratique. Donc, nous passons au-dessus d'un caractère avec l, et tirons le texte r*avec yE([y] à la [E] nd de ce mot).

Pour fermer ce tampon, nous utilisons le raccourci pour enregistrer un fichier ZZ. Maintenant, nous sélectionnons visuellement nos espaces et lançons le texte tiré comme si nous l'avions dactylographié @". Cela fonctionne parce que "@" exécute le registre suivant sous forme de frappes vim, et "est le registre par défaut pour yanking.

DJMcMayhem
la source
Voulez-vous expliquer comment cela fonctionne?
corvus_192
@ corvus_192 J'ai ajouté une explication plus complète, ainsi qu'un peu plus de golf.
DJMcMayhem
La taille du fichier de données ne doit-elle pas être ajoutée au nombre d'octets?
aross
@aross la taille du fichier d'aide? Non, car ce fichier est installé à côté de vim et constitue une fonctionnalité par défaut.
DJMcMayhem
5

C, 47 46 45 43 octets

Prend les entrées de la ligne de commande

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

Fondamentalement, si n n'est pas 0, recurse sur n-1. en haut de la récursivité, où n est 0, une nouvelle ligne est simplement imprimée, la boucle for se termine lorsque n est égal à -1 ou ~ n est égal à zéro, sinon elle affiche le code ASCII 42, qui est '*'. Essayez sur ideone

C ++ 58 octets + 19 pour inclure iostream est 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
la source
Pour moi, semble fonctionner avec &&: n?f(n-1):0n&&f(n-1).
Manatwork
@manatwork Merci bourgeon. enregistrer un autre octet
cleblanc
Dans ideone, les empreintes de 2 triangles montrent à la fin il y a un '\ n' plus: * ** *** * ** *** **** ***** Je dis le cas 0 le cas fin reversion, print one \ n more
RosLuP
@RosLup Oui, c'est l'impression d'une nouvelle ligne de début et de fin. Je pense que le PO a dit que c'était OK dans ses commentaires.
Cleblanc
4

Rétine , 14 octets

Le nombre d'octets suppose un codage ISO 8859-1.

.+
$**
.
$`$&¶

Essayez-le en ligne!

Explication

.+
$**

Transformez l'entrée Nen Nastérisques.

.
$`$&¶

Remplacez chaque astérisque par tous les éléments jusqu’à et y compris cet astérisque (c’est le $`$&) et un saut de ligne (c’est le ).

Martin Ender
la source
4

Cubix , 22 octets

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

Testez-le en ligne! Sort un retour à la ligne final.

Au début, je n'étais pas sûr de pouvoir placer ceci sur un cube de 2, mais à la fin, tout s'est bien passé:

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

J'ajouterai une explication quand j'en aurai le temps, j'espère plus tard aujourd'hui.

ETHproductions
la source
Explication à tout moment? : P
FlipTack