Meduza , 12 11 9 bajtów
\P$'*
i
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 N
gwiazdek. \P
tworzy 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 1
do N
gwiazdek.
Martin Ender
źródło
źródło
([1..n]>>"*")
zamiast,replicate n'*'
aby zapisać bajt. Liczę też tylko 39 bajtów.f 0=""
której liczona jest jako jeden bajt, ale w niektórych edytorach tekstowych jest pokazywana jako dwa bajty / znaki.f x=unlines[[1..n]>>"*"|n<-[1..x]]
.Pyth, 7 bajtów
Znalazłem bajt dzięki @ETHproductions Wypróbuj online
przy użyciu techniki @ PIetu1998
6 bajtów
źródło
"*"
z\*
.j*L\*S
(w tymS
zakres, pomnóż każdy*L
przez „*”\*
,j
oin przez nowy wiersz) Pyth wstawia ukryte Q na końcu.jm*\*h
ma również 6 bajtów.2sable ,
2411 bajtówWypróbuj online!
I żadnych śladów gwiazdek! Grał w golfa od 24 do 11 dzięki @Emigna .
Wyjaśnienie:
źródło
õVYI
w ż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.Brain-Flak 75 bajtów
Obejmuje +3 za
-A
Wypróbuj online!
Wyjaśnienie:
źródło
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!
źródło
⌸
może być pojedynczym bajtem:(,⍕⊢)⌸⍳
7 bytes<sup>SBCS</sup>
.V , 8 bajtów
Wypróbuj online!
źródło
Àé
hòlÄ
!<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.JavaScript (ES6), 34 bajty
źródło
Perl 6 , 23 bajtów
(Jeśli dane wyjściowe mogą być listą „linii” bez znaków nowej linii,
.put for
można je usunąć)Wyjaśnienie:
(Zobacz dokumentację,
produce
jeśli nie rozumiesz, co[\~] ...
się dzieje)źródło
Perl 5,
2220 bajtówUruchom go za pomocą
-E
przełącznika, aby uzyskaćsay
.Napisany jako pełny program wyglądałby tak:
shift
ipop
domyślnie pracują nad@ARGV
(listą argumentów) poza sub..
jest operatorem zasięgusay
zawiera nową linięx
jest operatorem do powtarzania ciągów i jest wyjaśnione w perlopźródło
-E
flaga liczy się jako 1 dodatkowy bajt.perl -E 'say"*"x$_ for 1..<>' <<< 5
-E
jest bezpłatny (ponieważ zastępuje to,-e
co 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ćpop
zamiastshift
(2 bajty krótszy)! W każdym razie, witamy na PPCG, cieszę się, że grasz w golfa!Perl, 19 bajtów
-4 bajty dzięki @Tonowi Hospelowi i jego przeróbce rozwiązania!
Potrzebuje wolnej flagi
-E
(lub-M5.010
) do uruchomienia. Pobiera liczbę z danych wejściowych:źródło
eval
taką samą długość jakfor
roztwór (używając<>
zamiastpop
) zeval"s//*/;say;"x<>
J,
118 bajtówZaoszczędzone 3 bajty dzięki kilometrom!
Oto rozkład:
Teraz ten ostatni brzmi „przedrostki (
]\
) ciągu składającego się zx
kopii'*'
”. Przestrzegać:Przypadek testowy
Starsze, 11-bajtowe rozwiązania
To jest równoważne
1 + i.
jest zasięgiem[1, x]
. Następnie'*' #~"0
zastosowano do tego zakresu kształty (element) kopii'*'
.Program bonusowy:
To jest widelec z czapką
#&'*'\
zastosowany do wyniku danych#&1
wejściowych.#&1
daje tablicęx
jedynek i#&'*'\
kształty'*'
do prefiksów tej tablicy.Przypadki testowe
źródło
n
kopii'*'
dla 8 bajtów, używając]\@#&'*'
'*'"0\@i.
Vim,
22, 18 klawiszyOgromne 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 autoindent
włą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żywamyJ
do łą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 typr*
, 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:Z kursorem na pierwszym „r”. Jednak sam plik faktycznie zawiera ten tekst:
Całkiem wygodne. Poruszamy się więc nad jednym znakiem
l
i szarpamy tekst zar*
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.źródło
C,
47464543 bajtówPobiera dane z wiersza poleceń
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
źródło
&&
:n?f(n-1):0
→n&&f(n-1)
.Siatkówka , 14 bajtów
Liczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
Wyjaśnienie
Zmień dane wejściowe
N
wN
gwiazdki.Zamień każdą gwiazdkę na wszystko, włącznie z tą gwiazdką (to jest
$`$&
) i linefeed (to the¶
).źródło
MATL,
98 bajtów1 bajt zapisany dzięki @Luis
Wypróbuj online
źródło
Cubix , 22 bajty
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:
Dodam wyjaśnienie, kiedy będę miał czas, mam nadzieję, że dzisiaj.
źródło