Brachylog , 12 Bytes

7

Qualle , 12 11 9 Bytes

\P$'*
  i

Probieren Sie es online!

Erläuterung

Das obige Programm entspricht dem folgenden funktionalen Pseudocode:

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

Die $(Umformung) erzeugt eine Reihe von NSternchen. \PErstellt eine Funktion, die eine Liste (oder einen String) aufnimmt und jedes ihrer Präfixe an P(print) übergibt . Auf diese Weise werden nacheinander Zeichenfolgen 1mit NSternchen gedruckt .

Martin Ender
quelle

Antworten:

7

R, 45 Bytes

Für den Loop-Ansatz:

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

Brachylog , 12 Bytes

yke:"*"rj@w\

Probieren Sie es online!

Dies setzt voraus, dass eine abschließende neue Zeile akzeptabel ist

Erläuterung

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

Keine nachgestellte neue Zeile, 15 Bytes

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

Probieren Sie es online!

Dieser funktioniert mit allen Präfixen von "*" × Input.

Tödlich
quelle
6

Haskell, 35 38 Bytes

Listenverständnis dank nimi:

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

Alte Version:

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

Alternative Version:

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g
Craig Roy
quelle
Sie können ([1..n]>>"*")anstelle von replicate n'*'ein Byte speichern. Ich zähle auch nur 39 Bytes.
Laikoni
Schöne alternative Version! Ich denke jedoch, dass die Anzahl der Bytes immer noch eins ist und 38 betragen sollte. (Siehe z. B. hier ) Das Problem könnte die neue Zeile sein, f 0=""die als ein Byte gezählt wird, in einigen Texteditoren jedoch als zwei Bytes / Zeichen angezeigt wird.
Laikoni
Vielen Dank! Ich sehe jetzt, dass ich beim Zählen der Zeichen zuerst eine nachgestellte Zeile hinzugefügt habe. Machen Sie diesen Fehler nicht noch einmal!
Craig Roy
2
Sie können auf eine Liste Verständnis wechseln: f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi
6

Pyth, 7 Bytes

VQ*\*hN

Ausgeflippt dank @ETHproductions Probieren Sie es online aus

mit @ PIetu1998's Technik

6 Bytes

j*L*\*S
Dignissimus - Spammy
quelle
Gute Antwort! Sie können ersetzen "*"mit \*.
ETHproductions
@ETHproductions Davon wusste ich nie, danke!
Dignissimus - Spammy
Sie können ein weiteres Byte mit einer Map entfernen. j*L\*S(Inklusivbereich S, jeweils *Lmit "*" multiplizieren \*, in jZeilenumbrüchen einfügen) Pyth fügt am Ende ein implizites Q ein.
PurkkaKoodari
jm*\*hist auch 6 Bytes.
Hakr14
6

2sable , 24 11 Bytes

>G')Ç>çJN×,

Probieren Sie es online!

Und keine Sternchen! Golfen von 24 bis 11 dank @Emigna .

Erläuterung:

>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
quelle
1
Einige Tipps. õVYIhat keinen Einfluss auf Ihren Code und kann entfernt werden. 1+ist das gleiche wie >. Wenn Sie den Stern in der Schleife erstellen, können Sie ihn auch entfernen UX. Durch die Verwendung ×der inneren Schleife werden noch mehr Bytes gespart. Ohne die Methode zu ändern, können Sie dies auf 11 Bytes oder weniger reduzieren.
Emigna
1
Nett! Ich werde es bald bearbeiten
Geno Racklin Asher
Könnten Sie eine Erklärung hinzufügen?
Buffer Over Read
Wunderbarer Code, herzlichen Glückwunsch zum Erhalt der Prämie! Der Community-Bot hat anscheinend nur 25 und nicht die ursprünglichen 50 vergeben, da ich vergessen habe, das Kopfgeld vor Ablauf der Frist zu vergeben.
Buffer Over Read
1
Mach dir keine Sorgen. Freut mich, die 100-Wiederholungs-Marke zu erreichen. @TheBitByte
Geno Racklin Asher
6

Brain-Flak 75 Bytes

Beinhaltet +3 für -A

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

Probieren Sie es online!


Erläuterung:

{(({})[()]<                                                        >)}
#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
quelle
Dazu gehört ein Null-Byte in der Ausgabe? Ich denke nicht, dass das erlaubt ist ...
Destructible Lemon
Nein, ich meine ein Null-Byte
Destructible Lemon
@DestructibleWatermelon Ja, ich denke schon. Einfache Lösung. Vielen Dank.
Riley
6

Dyalog APL , 8 Bytes

'*'⍴⍨¨⍳

matrify die Liste bestehend aus

'*' die Saite "*"

⍴⍨ umgestaltet von

¨ jeder von

die ganzen Zahlen 1 durch das Argument.

TryAPL online!

Adam
quelle
Sieht aus wie 8 Bytes für mich.
Erik der Outgolfer
1
wenn kann ein einzelnes Byte sein:(,⍕⊢)⌸⍳
ngn
@ngn Das ist sehr schlau! Poste es als dein eigenes. Sie können es tatsächlich als ein einzelnes Byte zählen, das Sie schreiben 7 bytes<sup>SBCS</sup>.
Adám,
5

V , 8 Bytes

Àé*hòlÄx

Probieren Sie es online!

DJMcMayhem
quelle
Oh ja Àé hòlÄ!
Jonathan Allan
2
@ JonathanAllan Hey, zumindest ist es lesbarer als Jelly. (Zu mir);)
DJMcMayhem
Jellys Codepage ist, glaube ich, ziemlich gut organisiert. Schauen Sie sich den Überblick über die Atoms-Seite des Wikis an, die Lynn kürzlich erstellt hat.
Jonathan Allan
3
@ JonathanAllan Ja, ich würde es glauben. Möglicherweise sieht es nicht so aus, aber die Mnemonik von V ist gut organisiert, da Sie die Tasten verwenden, um sie in vim einzugeben. Meine Lösung im Vim-Key-Jargon lautet also <M-@><M-i>*h<M-r>l<M-D>x(m steht für meta, was alt bedeutet). All das sind ziemlich gute Mnemoniken für das, was der Befehl tut.
DJMcMayhem
5

JavaScript (ES6), 34 Byte

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

Perl 6 , 23 Bytes

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

(Wenn die Ausgabe eine Liste von "Zeilen" sein .put for darf, ohne dass Zeilenumbrüche entfernt werden können)

Erläuterung:

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

(In der Dokumentation finden produceSie Informationen, wenn Sie nicht verstehen, was Sie [\~] ...tun.)

Brad Gilbert b2gills
quelle
5

Perl 5, 22 20 Bytes

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

Führen Sie es mit dem -ESchalter zu bekommen say.

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

Geschrieben als volles Programm würde es so aussehen:

use strict;
use feature 'say';

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

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}
  • shiftund popimplizit an @ARGV(der Liste der Argumente) außerhalb von subs arbeiten
  • ..ist der Bereichsoperator
  • say Beinhaltet einen Zeilenumbruch
  • xist ein Operator zum Wiederholen von Strings und wird in Perlop erklärt
simbabque
quelle
Ich bin mir nicht sicher, ob ich zusätzliche Bytes für den Befehlszeilenschalter benötige.
Simbabque
Ich glaube, das -EFlag zählt als 1 zusätzliches Byte.
ETHproductions
Was ist mit der Eingabe der Nummer anstelle des Parameters? perl -E 'say"*"x$_ for 1..<>' <<< 5
Manatwork
@manatwork ja das würde funktionieren. Ich kann aber nicht gut zählen. Ich bin mir nicht sicher, ob das erlaubt ist.
Simbabque
1
-Eist kostenlos (da es ersetzt, -ewas sowieso benötigt würde). Wenn Sie die Nummer wirklich von der Befehlszeile übernehmen möchten (warum nicht, auch wenn <>1 Byte kürzer und zulässig ist), sollten Sie popstattdessen shift(2 Byte kürzer) verwenden! Wie auch immer, willkommen bei PPCG, ich freue mich, Sie beim Golfen zu sehen!
Dada
5

Perl, 19 Bytes

-4 Bytes dank @Ton Hospel und seiner Überarbeitung der Lösung!

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

Benötigt freie -E(oder -M5.010) Flagge zum Laufen. Nimmt eine Zahl aus der Eingabe:

perl -E 'eval"s//*/;say;"x<>' <<< "5"
Dada
quelle
1
Sie können evaldie gleiche Länge wie die forLösung (mit <>anstelle von pop) miteval"s//*/;say;"x<>
Ton Hospel
@TonHospel Ineed, schön! Vielen Dank!
Dada
5

J 11 8 Bytes

Dank Meilen 3 Bytes gespart!

]\@#&'*'

Hier ist eine Zerlegung:

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

Dieser letzte lautet nun "die Präfixe ( ]\) der Zeichenfolge, die aus xKopien von '*'" besteht. Beobachten:

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

Testfall

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

Ältere 11-Byte-Lösungen

'*'#~"+1+i.

Das ist äquivalent

'*' #~"0 1 + i.

1 + i.ist die Reichweite [1, x]. Anschließend werden '*' #~"0auf diesen Bereich Formen (Element) von Kopien angewendet '*'.

Bonusprogramm:

[:#&'*'\#&1

Dies ist eine Gabelung mit einer Kappe, #&'*'\die auf das Ergebnis #&1der Eingabe angewendet wird . #&1Gibt ein Array von xEinsen und #&'*'\Formen '*'für die Präfixe dieses Arrays an.

Testfälle

   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
quelle
Sie können auch die Präfixe der Zeichenfolge von nKopien '*'für 8 Bytes mit]\@#&'*'
miles
@ Meilen: und eine weitere 9-Byte-Version:'*'"0\@i.
Jonah
5

Vim, 22 , 18 Tastenanschläge

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

Vielen Dank an @Udioica für die fantastische Antwort, die ich erweitert habe. Diese Antwort enthält keine Sternchen, in der Hoffnung, das Kopfgeld zu gewinnen.

Erläuterung:

Die Eingabe wird vor dem Rest des Programms eingegeben. Udioica hat sich diesen tollen Trick ausgedacht. Wenn Sie tippen, <n>O <esc>wird eine Pyramide von Leerzeichen und eine leere Zeile erstellt, sofern Sie dies :set autoindentaktiviert haben. Diese Option ist in vim 8 und neovim standardmäßig aktiviert, jedoch nicht in älteren Versionen von vim. Da hierdurch auch eine zusätzliche Zeile erstellt wird, verbinden wir Jdiese Zeile mit der nächsten, wodurch die unter uns liegende Zeile entfernt wird.

Jetzt müssen wir alle diese Leerzeichen durch Sternchen ersetzen. Wenn ich mir keine Sorgen um die Verwendung von Sternchen in meinem Code machen würde, würde ich einfach das Ganze <C-v>{und den Typ visuell auswählen r*, wodurch jedes Zeichen der Auswahl durch ein Sternchen ersetzt wird. Das kann ich aber nicht.

Also öffnen wir die Hilfeseiten zu :h r. Das Interessante daran ist, dass diese Seite im vim-Fenster angezeigt wird als:

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

Mit dem Cursor auf das erste 'r'. Die Datei selbst enthält jedoch tatsächlich den folgenden Text:

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

Ziemlich praktisch. Also bewegen wir uns mit über ein Zeichen lund ziehen den Text r*mit yE([y] ank an das [E] nd dieses Wortes).

Um diesen Puffer zu schließen, verwenden wir die Verknüpfung, um eine Datei zu speichern ZZ. Jetzt wählen wir visuell unsere Leerzeichen aus und führen den gezerrten Text so aus, als hätten wir ihn eingegeben @". Dies funktioniert, weil "@" das folgende Register als vim-keystrokes ausführt und "das Standardregister für das Ziehen ist.

DJMcMayhem
quelle
Möchten Sie erklären, wie es funktioniert?
corvus_192
@ corvus_192 Ich habe eine ausführlichere Erklärung hinzugefügt, sowie einige mehr aus Golf.
DJMcMayhem
Sollte die Größe der Datendatei nicht zur Byteanzahl hinzugefügt werden?
am
@ Über die Größe der Hilfedatei? Nein, da diese Datei zusammen mit vim installiert wird und eine Standardfunktion ist.
DJMcMayhem
5

C 47 46 45 43 Bytes

Übernimmt Eingaben von der Kommandozeile

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

Grundsätzlich gilt, wenn n nicht 0 ist, n-1 erneut. am oberen Rand der Rekursion, wo n 0 ist, wird nur eine neue Zeile ausgegeben, die for-Schleife wird beendet, wenn n -1 ist oder ~ n Null ist, andernfalls wird ASCII 42 ausgegeben, was '*' ist. Probiere es auf ideone aus

C ++ 58 Bytes + 19 für das Einschließen von iostream ist 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
quelle
Für mich scheint das zu funktionieren mit &&: n?f(n-1):0n&&f(n-1).
Manatwork
@manatwork Danke Knospe. Speichern eines weiteren Bytes
Cleblanc
In ideone der Druck von 2 Dreiecken am Ende gibt es ein '\ n' mehr: * ** *** * *** **** ***** Ich sage den Fall 0 das Fallende von Revision, drucken Sie ein \ n mehr
RosLuP
@RosLup Ja, es wird eine führende und eine nachfolgende Zeile gedruckt. Ich denke, das OP sagte, dass das in seinen Kommentaren OK war.
Cleblanc
4

Retina , 14 Bytes

Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.

.+
$**
.
$`$&¶

Probieren Sie es online!

Erläuterung

.+
$**

Verwandeln Sie die Eingabe Nin NSternchen.

.
$`$&¶

Ersetzen Sie jedes Sternchen durch alles bis einschließlich dieses Sternchens (dies ist das $`$&) und eines Zeilenvorschubs (dies ist das ).

Martin Ender
quelle
4

Cubix , 22 Bytes

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

Online testen! Gibt eine nachgestellte Newline aus.

Anfangs war ich mir nicht sicher, ob ich das auf einen 2-Würfel bringen könnte, aber am Ende hat es gut geklappt:

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

Ich werde eine Erklärung hinzufügen, wenn ich Zeit habe, hoffentlich später heute.

ETHproductions
quelle
Erklärung irgendwann bald? : P
FlipTack