Brachylog , 12 byte

7

Ubur-ubur , 12 11 9 byte

\P$'*
  i

Cobalah online!

Penjelasan

Program di atas setara dengan pseudocode fungsional berikut:

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

The $(membentuk kembali) menciptakan string Ntanda bintang. \Pmembuat fungsi yang mengambil daftar (atau string) dan melewati masing-masing awalannya ke P(cetak). Karenanya, ini berturut-turut mencetak string 1ke Ntanda bintang.

Martin Ender
sumber

Jawaban:

7

R, 45 byte

Untuk pendekatan loop:

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

Brachylog , 12 byte

yke:"*"rj@w\

Cobalah online!

Ini mengasumsikan bahwa garis baru yang tertinggal dapat diterima

Penjelasan

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

Tidak ada garis baru, 15 byte

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

Cobalah online!

Ini bekerja dengan mengambil semua awalan "*" × Input.

Fatalisasi
sumber
6

Haskell, 35 38 byte

Daftar pemahaman berkat nimi:

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

Versi lama:

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

Versi alternatif:

g n=([1..n]>>"*")++"\n"
f n=[1..n]>>=g
Craig Roy
sumber
Anda dapat menggunakan ([1..n]>>"*")alih-alih replicate n'*'menyimpan byte. Saya juga hanya menghitung 39 byte.
Laikoni
Versi alternatif yang bagus! Namun saya pikir jumlah byte masih dengan satu dan harus 38. (Lihat misalnya di sini ) Masalahnya mungkin baris baru yang kemudian f 0=""dihitung sebagai satu byte, tetapi ditampilkan sebagai dua byte / karakter dalam beberapa editor teks.
Laikoni
Terima kasih! Saya melihat sekarang bahwa saya awalnya menambahkan baris baru ketika saya menghitung karakter. Tidak akan membuat kesalahan itu lagi!
Craig Roy
2
Anda dapat beralih ke daftar pemahaman: f x=unlines[[1..n]>>"*"|n<-[1..x]].
nimi
6

Pyth, 7 Bytes

VQ*\*hN

Merobohkan byte berkat @ETHproduk Coba online

menggunakan Teknik @ PIetu1998

6, byte

j*L*\*S
Dignissimus - Spammy
sumber
Jawaban bagus! Anda bisa menggantinya "*"dengan \*.
ETHproduk
@ ETHproductions Saya tidak pernah tahu tentang itu, terima kasih!
Dignissimus - Spammy
Anda dapat menghapus byte lain dengan peta. j*L\*S(termasuk Srentang, gandakan masing-masing *Ldengan "*" \*, join dengan baris baru) Pyth menyisipkan Q implisit pada akhirnya.
PurkkaKoodari
jm*\*hjuga 6 byte.
hakr14
6

2sable , 24 11 byte

>G')Ç>çJN×,

Cobalah online!

Dan tidak ada tanda-tanda bintang! Bermain golf mulai 24 hingga 11 berkat @Emigna .

Penjelasan:

>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
sumber
1
Beberapa tips. õVYItidak memengaruhi kode Anda dengan cara apa pun dan dapat dihapus. 1+sama dengan >. Jika Anda membuat tanda bintang di loop, Anda juga dapat menghapus UX. Menggunakan ×alih-alih lingkaran dalam menyimpan lebih banyak byte. Tanpa mengubah metode Anda bisa mendapatkan ini hingga 11 byte atau kurang.
Emigna
1
Bagus! Saya akan segera mengedit
Geno Racklin Asher
Bisakah Anda menambahkan penjelasan?
Buffer Over Read
Kode yang luar biasa, selamat atas hadiahnya! Bot komunitas tampaknya hanya memberi penghargaan 25 dan bukan yang asli 50 saya pikir karena saya lupa memberi hadiah sebelum batas waktu, maaf untuk itu.
Buffer Over Baca
1
Jangan khawatir tentang itu. Hanya senang mencapai tanda 100-rep. @TheBitByte
Geno Racklin Asher
6

Brain-Flak 75 Bytes

Termasuk +3 untuk -A

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

Cobalah online!


Penjelasan:

{(({})[()]<                                                        >)}
#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
sumber
ini termasuk output byte nol? Saya tidak berpikir itu diperbolehkan ...
Destructible Lemon
Tidak, maksudku byte nol
Destructible Lemon
@DestructibleWatermelon Ya, saya rasa tidak. Mudah diperbaiki. Terima kasih.
Riley
6

Dyalog APL , 8 byte

'*'⍴⍨¨⍳

matrify daftar yang terdiri dari

'*' string "*"

⍴⍨ dibentuk kembali oleh

¨ setiap

bilangan bulat 1 melalui argumen.

TryAPL online!

Adm
sumber
Sepertinya 8 byte bagi saya.
Erik the Outgolfer
1
jika bisa satu byte:(,⍕⊢)⌸⍳
ngn
@ Ngn Itu sangat pintar! Posting itu sebagai milikmu. Anda memang dapat menghitungnya sebagai byte tunggal yang Anda tulis 7 bytes<sup>SBCS</sup>.
Adám
5

V , 8 byte

Àé*hòlÄx

Cobalah online!

DJMcMayhem
sumber
Oh ya Àé hòlÄ!
Jonathan Allan
2
@ JonathanAllan Hei, setidaknya ini lebih mudah dibaca daripada Jelly. (Untuk saya);)
DJMcMayhem
Halaman kode Jelly, menurut saya cukup baik. Lihatlah halaman Atom wiki yang dibuat oleh Lynn baru-baru ini.
Jonathan Allan
3
@ Jonathan Allan Ya, saya akan percaya. Ini mungkin tidak terlihat seperti itu, tetapi mnemonik V terorganisir dengan baik karena tombol yang Anda gunakan untuk mengetikkannya di vim. Jadi solusi saya dalam istilah vim-key adalah <M-@><M-i>*h<M-r>l<M-D>x(m singkatan dari meta, yang berarti alt). Semua itu adalah mnemonik yang cukup bagus untuk apa yang dilakukan perintah.
DJMcMayhem
5

JavaScript (ES6), 34 byte

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

Perl 6 , 23 byte

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

(Jika output dibolehkan menjadi daftar "baris" tanpa baris baru .put for dapat dihapus)

Penjelasan:

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

(Lihat dokumentasi untuk producejika Anda tidak mengerti apa yang [\~] ...sedang dilakukan)

Brad Gilbert b2gills
sumber
5

Perl 5, 22 20 byte

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

Jalankan dengan -Esaklar untuk mendapatkan say.

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

Ditulis sebagai program lengkap akan terlihat seperti ini:

use strict;
use feature 'say';

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

foreach my $i (1 .. $limit) { 
    say "*" x $i; 
}
simbabque
sumber
Tidak yakin apakah saya perlu byte tambahan untuk saklar baris perintah.
simbabque
Saya percaya -Eflag dihitung sebagai 1 byte tambahan.
ETHproduk
Bagaimana dengan mengambil nomor sebagai input dan bukan parameter? perl -E 'say"*"x$_ for 1..<>' <<< 5
manatwork
@manatwork ya itu akan berhasil. Saya tidak pandai menghitung. Tidak yakin apakah itu diizinkan.
simbabque
1
-Egratis (karena menggantikan -eyang akan tetap diperlukan). Jika Anda benar-benar ingin mengambil nomor dari baris perintah (mengapa tidak, walaupun <>1 byte lebih pendek, dan diizinkan), Anda harus menggunakan popalih-alih shift(2 byte lebih pendek)! Bagaimanapun, selamat datang di PPCG, senang melihat Anda bermain golf!
Dada
5

Perl, 19 byte

-4 Bytes berkat @Ton Hospel dan pengerjaan ulang solusinya!

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

Membutuhkan flag -E(atau -M5.010) gratis untuk dijalankan. Mengambil angka dari input:

perl -E 'eval"s//*/;say;"x<>' <<< "5"
Dada
sumber
1
Anda dapat membuat evalpanjang yang sama dengan forsolusinya (menggunakan <>bukan pop) denganeval"s//*/;say;"x<>
Ton Hospel
@TonHospel Ineed, bagus! Terima kasih!
Dada
5

J, 11 8 byte

Disimpan 3 byte berkat mil!

]\@#&'*'

Berikut ini adalah dekomposisi:

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

Sekarang, yang terakhir ini dibaca sebagai "awalan ( ]\) dari string yang terdiri dari xsalinan '*'". Mengamati:

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

Kasus cobaan

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

Solusi 11 byte yang lebih lama

'*'#~"+1+i.

Ini setara

'*' #~"0 1 + i.

1 + i.adalah kisaran [1, x]. Lalu, '*' #~"0diterapkan ke rentang ini bentuk (elemen) salinan '*'.

Program bonus:

[:#&'*'\#&1

Ini adalah garpu tertutup yang #&'*'\diterapkan pada hasil #&1input. #&1memberikan array xyang, dan #&'*'\bentuk '*'ke awalan array ini.

Uji kasus

   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
sumber
Anda juga bisa mendapatkan awalan dari string nsalinan '*'untuk 8 byte menggunakan]\@#&'*'
mil
@miles: dan versi 9 byte lainnya:'*'"0\@i.
Jonah
5

Vim, 22 , 18 penekanan tombol

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

Penghargaan besar bagi @Udioica karena memberikan jawaban vim yang luar biasa yang saya kembangkan. Jawaban ini tidak mengandung tanda bintang, dengan harapan memenangkan hadiah.

Penjelasan:

Input diketik sebelum sisa program. Udioica datang dengan trik yang luar biasa ini. Mengetik <n>O <esc>akan membuat piramida ruang dan satu baris kosong, selama Anda telah :set autoindentmengaktifkannya. Opsi ini aktif secara default di vim 8 dan neovim, meskipun bukan versi vim yang lebih lama. Karena ini juga membuat garis tambahan, kami gunakan Juntuk bergabung dengan baris ini dengan yang berikutnya, yang secara efektif hanya menghapus garis di bawah kami.

Sekarang pada titik ini, kita perlu mengganti semua ruang ini dengan tanda bintang. Jika saya tidak khawatir tentang menggunakan tanda bintang dalam kode saya, saya hanya akan memilih semuanya secara visual <C-v>{dan mengetik r*, yang menggantikan setiap karakter pilihan dengan tanda bintang. Tetapi saya tidak bisa melakukan itu.

Jadi kami membuka halaman bantuan untuk :h r. Hal yang menarik tentang ini adalah bahwa di vim-window, halaman ini ditampilkan sebagai:

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

Dengan kursor di 'r' pertama. Namun, file itu sendiri sebenarnya mengandung teks ini:

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

Cukup nyaman. Jadi kita memindahkan satu karakter dengan l, dan menarik teks r*dengan yE([y] ank ke [E] dan kata ini).

Untuk menutup buffer ini, kami menggunakan pintasan untuk menyimpan file ZZ. Sekarang, kami secara visual memilih spasi kami, dan menjalankan teks yang ditarik ke atas seolah-olah kami telah mengetiknya dengan melakukan @". Ini berfungsi karena "@" menjalankan register berikut sebagai vim-keystrokes, dan "adalah register default untuk mencabut.

DJMcMayhem
sumber
Mau jelaskan cara kerjanya?
corvus_192
@ corvus_192 Saya telah menambahkan penjelasan yang lebih luas, serta bermain golf lagi.
DJMcMayhem
Bukankah ukuran file data harus ditambahkan ke jumlah byte?
aross
@ Aross ukuran file bantuan? Tidak, karena file ini diinstal bersama vim, dan merupakan fitur default.
DJMcMayhem
5

C, 47 46 45 43 byte

Mengambil input dari baris perintah

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

Pada dasarnya jika n bukan 0 recurse pada n-1. di atas rekursi di mana n adalah 0 itu hanya mencetak baris baru, untuk loop berakhir ketika n adalah -1 atau ~ n adalah nol, jika tidak mencetak ASCII 42 yang merupakan '*'. Cobalah di ideone

C ++ 58 Bytes + 19 untuk termasuk iostream adalah 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
sumber
Bagi saya sepertinya bekerja dengan &&: n?f(n-1):0n&&f(n-1).
manatwork
@manatwork Terima kasih bud. menyimpan byte lain
cleblanc
Dalam ideone cetakan 2 segitiga menunjukkan di akhir ada satu '\ n' lebih: * ** *** * ** *** **** ***** Saya katakan kasing 0 ujung kasing revursion, cetak satu lagi
RosLuP
@RosLup Ya itu mencetak baris baru yang memimpin dan tertinggal. Saya pikir OP mengatakan tidak apa-apa dalam komentarnya.
cleblanc
4

Retina , 14 byte

Hitungan byte mengasumsikan penyandian ISO 8859-1.

.+
$**
.
$`$&¶

Cobalah online!

Penjelasan

.+
$**

Ubah input Nmenjadi Ntanda bintang.

.
$`$&¶

Ganti setiap tanda bintang dengan semuanya hingga dan termasuk tanda bintang itu (ini adalah $`$&) dan linefeed (ini yang ).

Martin Ender
sumber
4

Cubix , 22 byte

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

Uji secara online! Menghasilkan baris baru yang tertinggal.

Pada awalnya saya tidak yakin saya bisa memasukkan ini ke dalam 2-kubus, tetapi pada akhirnya itu berhasil:

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

Saya akan menambahkan penjelasan ketika saya punya waktu, semoga hari ini nanti.

Produksi ETH
sumber
Penjelasan dalam waktu dekat? : P
FlipTack