Brachylog , 12 bajtów

7

Meduza , 12 11 9 bajtów

\P$'*
  i

Wypróbuj online!

Wyjaśnienie

Powyższy program jest równoważny z następującym funkcjonalnym pseudokodem:

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

$(Reshape) tworzy ciąg Ngwiazdek. \Ptworzy funkcję, która pobiera listę (lub ciąg znaków) i przekazuje każdy ze swoich przedrostków do P(drukuj). Stąd, to sukcesywnie drukuje ciągi 1do Ngwiazdek.

Martin Ender
źródło

Odpowiedzi:

7

R, 45 bajtów

W przypadku podejścia w pętli:

for(i in 1:scan())cat(rep("*",i),"\n",sep="")
Billywob
źródło
6

Brachylog , 12 bajtów

yke:"*"rj@w\

Wypróbuj online!

Zakłada się, że nowa linia końcowa jest dopuszczalna

Wyjaśnienie

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

Brak nowej linii, 15 bajtów

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

Wypróbuj online!

Ten działa, biorąc wszystkie prefiksy "*" × Input.

Fatalizować
źródło
6

Haskell, 35 38 bajtów

Zrozumienie listy dzięki nim:

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

Stara wersja:

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

Alternatywna wersja:

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g
Craig Roy
źródło
Możesz użyć ([1..n]>>"*")zamiast, replicate n'*'aby zapisać bajt. Liczę też tylko 39 bajtów.
Laikoni,
Ładna alternatywna wersja! Myślę jednak, że liczba bajtów jest wciąż równa jeden i powinna wynosić 38. (Zobacz np. Tutaj ) Problemem może być nowa linia, po f 0=""której liczona jest jako jeden bajt, ale w niektórych edytorach tekstowych jest pokazywana jako dwa bajty / znaki.
Laikoni,
Dzięki! Widzę teraz, że początkowo dodawałem końcowy znak nowej linii, kiedy liczyłem znaki. Nie popełnię tego błędu ponownie!
Craig Roy
2
Możesz przełączyć się na liście ze zrozumieniem: f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi
6

Pyth, 7 bajtów

VQ*\*hN

Znalazłem bajt dzięki @ETHproductions Wypróbuj online

przy użyciu techniki @ PIetu1998

6 bajtów

j*L*\*S
Dignissimus - Spammy
źródło
Niezła odpowiedź! Można wymienić "*"z \*.
ETHproductions 10.10.16
@ETHproductions Nigdy o tym nie wiedziałem, dzięki!
Dignissimus
Możesz usunąć kolejny bajt za pomocą mapy. j*L\*S(w tym Szakres, pomnóż każdy *Lprzez „*” \*, join przez nowy wiersz) Pyth wstawia ukryte Q na końcu.
PurkkaKoodari,
jm*\*hma również 6 bajtów.
hakr14
6

2sable , 24 11 bajtów

>G')Ç>çJN×,

Wypróbuj online!

I żadnych śladów gwiazdek! Grał w golfa od 24 do 11 dzięki @Emigna .

Wyjaśnienie:

>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
źródło
1
Kilka wskazówek. õVYIw żaden sposób nie wpływa na kod i można go usunąć. 1+jest taki sam jak >. Jeśli utworzysz gwiazdkę w pętli, możesz ją również usunąć UX. Użycie ×zamiast wewnętrznej pętli oszczędza jeszcze więcej bajtów. Bez zmiany metody można zmniejszyć to do 11 bajtów lub mniej.
Emigna
1
Miły! Wkrótce
dokonam
Czy możesz dodać wyjaśnienie?
Bufor
Wspaniały kod, gratuluję zdobycia nagrody! Wygląda na to, że bot społecznościowy przyznał tylko 25, a nie oryginalne 50, ponieważ zapomniałem przyznać nagrodę przed upływem terminu, przepraszam za to.
Bufor
1
Nie martw się o to. Cieszę się, że osiągnąłem 100 powtórzeń. @TheBitByte
Geno Racklin Asher
6

Brain-Flak 75 bajtów

Obejmuje +3 za -A

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

Wypróbuj online!


Wyjaśnienie:

{(({})[()]<                                                        >)}
#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
źródło
obejmuje to bajt zerowy w danych wyjściowych? Nie sądzę, że jest to dozwolone ...
Zniszczalna cytryna
Nie, mam na myśli bajt zerowy
Destructible Lemon
@DestructibleWatermelon Tak, chyba tak. Łatwa naprawa. Dzięki.
Riley,
6

Dyalog APL , 8 bajtów

'*'⍴⍨¨⍳

zmaterializuj listę składającą się z

'*' ciąg „*”

⍴⍨ przekształcony przez

¨ każdy z

liczby całkowite od 1 do argumentu.

Wypróbuj APL online!

Adám
źródło
Wygląda mi na 8 bajtów.
Erik the Outgolfer
1
jeśli może być pojedynczym bajtem:(,⍕⊢)⌸⍳
ngn 13.01.18
@ngn To jest bardzo sprytne! Opublikuj jako własne. Możesz rzeczywiście liczyć to jako jeden bajt, który piszesz 7 bytes<sup>SBCS</sup>.
Adám
5

V , 8 bajtów

Àé*hòlÄx

Wypróbuj online!

DJMcMayhem
źródło
O tak Àé hòlÄ!
Jonathan Allan
2
@JonathanAllan Hej, przynajmniej jest bardziej czytelny niż Jelly. (Do mnie);)
DJMcMayhem
Strona kodowa Jelly jest, jak sądzę, całkiem dobrze zorganizowana. Sprawdź przegląd strony Atomy na wiki opracowanej niedawno przez Lynn.
Jonathan Allan,
3
@JonathanAllan Tak, uwierzyłbym. To może nie wyglądać tak, ale mnemoniki V są dobrze zorganizowane dzięki kluczom, których używasz do wpisywania ich w vimie. Więc moim rozwiązaniem w języku vim-key jest <M-@><M-i>*h<M-r>l<M-D>x(m oznacza meta, co oznacza alt). Wszystkie te są całkiem dobre mnemoniki do tego, co robi polecenie.
DJMcMayhem
5

JavaScript (ES6), 34 bajty

f=x=>x?f(x-1)+`
`+'*'.repeat(x):''
Huntro
źródło
5

Perl 6 , 23 bajtów

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

(Jeśli dane wyjściowe mogą być listą „linii” bez znaków nowej linii, .put for można je usunąć)

Wyjaśnienie:

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

(Zobacz dokumentację, producejeśli nie rozumiesz, co [\~] ...się dzieje)

Brad Gilbert b2gills
źródło
5

Perl 5, 22 20 bajtów

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

Uruchom go za pomocą -Eprzełącznika, aby uzyskać say.

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

Napisany jako pełny program wyglądałby tak:

use strict;
use feature 'say';

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

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}
simbabque
źródło
Nie jestem pewien, czy potrzebuję dodatkowych bajtów dla przełącznika wiersza poleceń.
simbabque
Uważam, że -Eflaga liczy się jako 1 dodatkowy bajt.
ETHproductions 10.10.16
Co powiesz na przyjęcie liczby jako parametru wejściowego zamiast parametru? perl -E 'say"*"x$_ for 1..<>' <<< 5
manatwork 10.10.16
@manatwork tak, to by działało. Nie jestem jednak dobry w liczeniu. Nie jestem pewien, czy to dozwolone.
simbabque 10.10.16
1
-Ejest bezpłatny (ponieważ zastępuje to, -eco i tak byłoby potrzebne). Jeśli naprawdę chcesz pobrać liczbę z wiersza poleceń (dlaczego nie, nawet jeśli <>jest 1 bajt krótszy i dozwolony), powinieneś użyć popzamiast shift(2 bajty krótszy)! W każdym razie, witamy na PPCG, cieszę się, że grasz w golfa!
Dada,
5

Perl, 19 bajtów

-4 bajty dzięki @Tonowi Hospelowi i jego przeróbce rozwiązania!

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

Potrzebuje wolnej flagi -E(lub -M5.010) do uruchomienia. Pobiera liczbę z danych wejściowych:

perl -E 'eval"s//*/;say;"x<>' <<< "5"
Dada
źródło
1
Możesz zrobić evaltaką samą długość jak forroztwór (używając <>zamiast pop) zeval"s//*/;say;"x<>
Ton Hospel 10.10.16
@TonHospel Ineed, miło! dzięki!
Dada,
5

J, 11 8 bajtów

Zaoszczędzone 3 bajty dzięki kilometrom!

]\@#&'*'

Oto rozkład:

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

Teraz ten ostatni brzmi „przedrostki ( ]\) ciągu składającego się z xkopii '*'”. Przestrzegać:

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

Przypadek testowy

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

Starsze, 11-bajtowe rozwiązania

'*'#~"+1+i.

To jest równoważne

'*' #~"0 1 + i.

1 + i.jest zasięgiem [1, x]. Następnie '*' #~"0zastosowano do tego zakresu kształty (element) kopii '*'.

Program bonusowy:

[:#&'*'\#&1

To jest widelec z czapką #&'*'\zastosowany do wyniku danych #&1wejściowych. #&1daje tablicę xjedynek i #&'*'\kształty '*'do prefiksów tej tablicy.

Przypadki testowe

   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
źródło
Można również uzyskać prefiksy ciągu nkopii '*'dla 8 bajtów, używając]\@#&'*'
mil
@miles: i kolejna 9-bajtowa wersja:'*'"0\@i.
Jonah
5

Vim, 22 , 18 klawiszy

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

Ogromne uznanie dla @Udioica za wymyślenie niesamowitej odpowiedzi vim, którą rozwinąłem. Ta odpowiedź nie zawiera gwiazdek, w nadziei na wygranie nagrody.

Wyjaśnienie:

Dane wejściowe są wpisywane przed pozostałą częścią programu. Udioica wymyślił tę niesamowitą sztuczkę. Pisanie <n>O <esc>spowoduje utworzenie piramidy spacji i jednej pustej linii, o ile :set autoindentwłączysz. Ta opcja jest domyślnie włączona w vimie 8 i neovimie, choć nie w starszych wersjach vima. Ponieważ tworzy to również dodatkową linię, używamy Jdo łączenia tej linii z następną, co skutecznie usuwa linię poniżej nas.

W tym momencie musimy zastąpić wszystkie te spacje gwiazdkami. Gdybym nie martwił się użyciem gwiazdek w kodzie, wybrałbym tylko wizualnie całą rzecz <C-v>{i typ r*, który zastępuje każdy znak zaznaczenia gwiazdką. Ale nie mogę tego zrobić.

Dlatego otwieramy strony pomocy na :h r. Interesującą rzeczą jest to, że w oknie vima ta strona jest wyświetlana jako:

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

Z kursorem na pierwszym „r”. Jednak sam plik faktycznie zawiera ten tekst:

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

Całkiem wygodne. Poruszamy się więc nad jednym znakiem li szarpamy tekst za r*pomocą yE([y] ank do [E] tego słowa).

Aby zamknąć ten bufor, używamy skrótu do zapisania pliku ZZ. Teraz wybieramy wizualnie nasze spacje i uruchamiamy szarpany tekst tak, jakbyśmy to zrobili @". Działa to, ponieważ „@” uruchamia następujący rejestr jako naciśnięcia klawiszy vim, a „jest domyślnym rejestrem dla szarpania.

DJMcMayhem
źródło
Chcesz wyjaśnić, jak to działa?
corvus_192
@ corvus_192 Dodałem szersze wyjaśnienie, a także trochę więcej golfa.
DJMcMayhem
Czy wielkość pliku danych nie powinna być dodawana do liczby bajtów?
aross
@aross rozmiar pliku pomocy? Nie, ponieważ ten plik jest instalowany wraz z vimem i jest funkcją domyślną.
DJMcMayhem
5

C, 47 46 45 43 bajtów

Pobiera dane z wiersza poleceń

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

Zasadniczo, jeśli n nie jest równe 0, powtórz na n-1. u góry rekurencji, gdzie n wynosi 0, po prostu wypisuje nową linię, pętla for kończy się, gdy n wynosi -1 lub ~ n wynosi zero, w przeciwnym razie wypisuje ASCII 42, który jest „*”. Wypróbuj na ideone

C ++ 58 bajtów + 19 za włączenie iostream jest 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
źródło
Wydaje mi się, że współpracuję z &&: n?f(n-1):0n&&f(n-1).
manatwork 11.10.16
@manatwork Thanks bud. zapisywanie kolejnego bajtu
cleblanc
W ideone nadruk 2 trójkątów na końcu jest jeszcze jeden „\ n”: * ** *** * ** *** **** ***** Mówię przypadek 0 koniec przypadku zwrot, wydrukuj \ n więcej
RosLuP
@RosLup Tak, drukuje wiodący i końcowy znak nowej linii. Myślę, że OP stwierdził, że było to w porządku w jego komentarzach.
cleblanc
4

Siatkówka , 14 bajtów

Liczba bajtów zakłada kodowanie ISO 8859-1.

.+
$**
.
$`$&¶

Wypróbuj online!

Wyjaśnienie

.+
$**

Zmień dane wejściowe Nw Ngwiazdki.

.
$`$&¶

Zamień każdą gwiazdkę na wszystko, włącznie z tą gwiazdką (to jest $`$&) i linefeed (to the ).

Martin Ender
źródło
4

Cubix , 22 bajty

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

Przetestuj online! Generuje końcowy znak nowej linii.

Na początku nie byłem pewien, czy uda mi się dopasować to do 2-sześcianu, ale ostatecznie wszystko poszło dobrze:

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

Dodam wyjaśnienie, kiedy będę miał czas, mam nadzieję, że dzisiaj.

ETHprodukcje
źródło
Wyjaśnienie w najbliższym czasie? : P
FlipTack