Wyzwanie
Twoim zadaniem jest utworzenie programu lub funkcji, która generuje następujące dane bez danych wejściowych:
a
bb
ccc
dddd
eeeee
ffffff
ggggggg
hhhhhhhh
iiiiiiiii
jjjjjjjjjj
kkkkkkkkkkk
llllllllllll
mmmmmmmmmmmmm
nnnnnnnnnnnnnn
ooooooooooooooo
pppppppppppppppp
qqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrr
sssssssssssssssssss
tttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzz
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku.
code-golf
string
kolmogorov-complexity
alphabet
SpookyGengar
źródło
źródło
Odpowiedzi:
05AB1E , 2 bajty
Wypróbuj online!
Zauważ, że dane wyjściowe są listą wierszy, co wyraźnie dozwolone PO. Link używa wersji z ładnym nadrukiem (połączone nowymi liniami).
Jak to działa
A
daje małe litery alfabetu.ƶ
podnosi alfabet (mnoży każdy element przez jego indeks).»
dołącza przez nowe linie.źródło
Python 2 , 36 bajtów
Wypróbuj online!
źródło
APL (Dyalog) ,
1285 bajtów SBCS3 bajty zapisane dzięki @ngn
4 bajty zapisane dzięki @ Adám
Poprawione wielkie litery OP są poprawne, a także są wyświetlane jako tablica ciągów.
Wypróbuj online!
W jaki sposób?
⌸
daje nam każdą literę w⎕A
alfabecie z jego indeksami, przekazanymi do funkcji⍴⍨
z literą jako lewym argumentem i indeksemesjako prawym argumentem.⍴⍨
podaje prawy argument na długość podaną przez lewy argument.⍨
przełącza lewy i prawy (dlatego jego symbol, wyglądający jak twarz osoby czytającej to objaśnienie).źródło
819⌶↑⎕A⍴¨⍨⍳26
↑
.Haskell , 27 bajtów
Wypróbuj online! Zwraca listę wierszy. (Dzięki @totallyhuman za zwrócenie uwagi, że jest to teraz dozwolone)
Wyjaśnienie:
źródło
<$
powtarza swój pierwszy argument n razy, gdzie n jest długością drugiego argumentu?pieprzenie mózgu , 74 bajty
Wypróbuj online!
Wyjaśnienie
Wypróbuj online!
źródło
Befunge-98 (FBBI) , 27 bajtów
gdzie
jest znakiem podstawienia (ASCII 26)
Wypróbuj online!
Używa wielkich liter i ma znak nowej linii.
Wyjaśnienie
Kod działa poprzez przechowywanie licznika (początkowo 0) i w każdej pętli:
1+
- Zwiększa to o 1:0\::
- Pcha rzeczy, aby stos wyglądał tak:bottom [N, 0, N, N, N] top
'`j'@
- Sprawdza, czy licznik jest większy niż 26j'@
- Jeśli tak, przeskakujemy'
i wychodzimy za pomocą@
j'@
- Jeśli nie, wykonujemy polecenie'
, które wypycha wartość ASCII@
na stosTeraz stos wygląda następująco:
bottom [N, 0, N, N, 64] top
+\
- Dodaje, a następnie przełącza górną 2: zabottom [N, 0, (N+64), N] top
pierwszym razem jest to ASCII 65 lubA
k:
- Duplikuje drugi z najwyższych(N+1)
czasów - teraz są(N+2)
wartości(N+64)
na stosie (plus teN
i0
wcześniej)$$
- Wyrzuć 2 najwyższe wartości - teraz są tylkoN
wartości(N+64)
>:#,_
- Drukuje każdą najwyższą wartość, aż dojdzie do0
- oznacza to, żeN
kopie(N+64)
są drukowane$
- Wyrzuca0
- Teraz stos jest sprawiedliwyN
a,
- Drukuje enterI to się powtarza
Podoba mi się, jak użyłem
@
obu do zakończenia programu i do dodania do licznika.źródło
Rubin ,
3230 bajtów-2 bajty dzięki @EricDuminil.
Wypróbuj online!
źródło
27.times{|n|puts (n+96).chr*n}
byłoby poprawne z 30 bajtamiJavaScript (ES6), 54 bajty
źródło
Excel VBA, 38 bajtów
Korzystanie z okna natychmiastowego. :)
źródło
"
BASH,
59 5440 bajtówWypróbuj online!
dzięki. 5 bajtów na @Justin Mariner
źródło
for
Pętla może być golfed dół za to wskazówka dla 54 bajtów: Spróbuj online!Rubinowy, 38 bajtów
Zwraca tablicę ciągów
-5 bajtów dzięki całkowicie ludzkiemu
* -11 bajtów dzięki doskonałemu golfowi Jordana.
źródło
"\n"
;puts
robi to za ciebie (choć dla przyszłego odniesienia$/
jest o 2 bajty krótszy) - ale możesz się goputs
całkowicie pozbyć, jeśli zrobisz z niego lambda, która zwraca tablicę wierszy. Możesz także zmienića=[*?a..?z];puts a.map
naputs (a=*?a..?z).map
ix*(a.index(x)+1)
nax*-~a.index(x)
. Wszystko razem to 38 bajtów .(a=*?a..?z)
jest w bloku, a nie w części argumentów lambda.V , 9 bajtów
Wypróbuj online!
Hexdump:
źródło
MATL, 9 bytes
Try it online!
Wyjaśnienie
źródło
&
can't be used to duplicate and transpose2Y2
?&
doesn't actually duplicate and transpose, although it sometimes produces the same result as that. What it does is modify the number of inputs/outputs of the next function. For example, if you use&+
, the+
function now takes one input instead of two, and outputs the sum of the input with itself transposed. But that's only because that's how+
work with 1 input (same for=
,>
and some others)Python 3, 37 bytes
Prints a leading newline (which is allowed).
Try it online!
źródło
Jelly,
54 bytessneaky Python implementation abuse
-1 byte thanks to Adám (outputting a list of lines has been allowed; as, now, has writing a function rather than a program)
A niladic link that returns a list of strings, the lines
(to print it with the newlines as a full program just add
Y
back in).Try it online! (the footer calls the link as a nilad (
¢
) and gets the Python representation of the result (ŒṘ
) for clarity as the default full-program behaviour would smash the result together likeabbccc...
)How?
źródło
Øa×J
should be enough.MATL, 11 bytes
Try it online!
Uses broadcast multiplication with ones to get a big square 26x26 matrix of the desired letters. Next, the lower triangular part is taken, and implicitly printed.
Also 11 bytes:
źródło
Javascript,
87 bytes, 72 bytes (A lot of thank to @steenbergh)My first answer too:
źródło
ind=1
at the start, the semicolon afteri<123
and the final semicolon. also, please make your header slightly more clear by stating language - bytecount, prefixed with a #.j
altogether:for(i=1;i<27;){console.log(String.fromCharCode(i+96).repeat(i++))}
Japt,
97 bytesOutputs an array of lines
Try it
Explanation
Split (
¬
) the lowercase alphabet (;C
) to an array of characters, map over the array (Ë
) and repeat (p
) the current element by the current index (E
) incremented (°
) times.źródło
®p°Y
Pip, 9 bytes
Try it online!
In pseudocode, this is
where
z
is preset to the lowercase alphabet andi
is preset to 0.Map-based solutions take one extra byte because they need the
-n
flag to display on multiple lines:źródło
Acc!!, 66 bytes
Try it online!
With comments
źródło
Haskell, 31 bytes
-12 bytes thanks to nimi.
Try it online!
This is not a snippet, it is a nullary function (one that takes no arguments) that outputs a list of lines which is allowed because of this meta consensus.
źródło
R, 38 bytes
A relatively uninteresting answer. Iterate for
i
from 1 to 26, print thei
th letter of the alphabeti
times (with an implicit line break).Try it online!
A more interesting approach might be to use something like the following:
This gives us all the letters in the right amount, but no linebreaks. Perhaps someone smarter than me can figure out a way to use that to make a golfier answer.
źródło
rep(letters, 1:26)
is much shorter...Perl 5, 19 bytes
Try it online!
źródło
Rust, 82 bytes
I had hoped that it would've been a lot shorter, but explicitly converting/casting between types takes a lot of bytes :(
Try it online!
źródło
PHP,
4746 bytesor
Run with
-nr
or try it online.źródło
J,
1817 bytesExplanation:
Try it online!
źródło
Perl 6,
2423 bytesTry it
Try it
źródło
Octave,
2524 bytesTry it online!
Saved one byte thanks to Giuseppe who informed me that OP allows upper case letters.
Explanation:
Create a vector
x
with the ASCII-values of the upper case alphabet, and transpose it. Add the negatedx
(thus 26 zeros, in a row vector, in order to create a grid with (the ASCII-values of):Take the lower triangular matrix and convert to characters by concatenating with the empty string.
źródło
C (gcc),
48 bytes50 bytesRe-runnable version, as per cleblanc and Steadybox in the comments below.
Try it online!
źródło
s[9];main(i){for(;i<27;)puts(memset(s,i+95,i++));}
Still beats my answer by a few bytes :)s[9];main(i){for(;puts(memset(s,i+95,i++))-27;);}
Japt,
171611 bytes-5 bytes thanks to Oliver
In ISO-8859-1
Not the best score, but I'm still a novice. Any suggestions are very welcome.
Outputs list of lines, as OP allowed. Link contains 3 bytes more for newlines.
Try it online!
źródło
1oBÊÄ
can be replaced by26õ
. You can save a couple more bytes by doing something like;26ÆCgX pXÄ
o
takes thef
argument...