Diberikan tanpa input, tugas Anda adalah menghasilkan yang berikut:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Secara nonvisual, tugas Anda adalah membuat setiap huruf dalam alfabet, dengan spasi sebelum sama dengan posisinya dalam alfabet minus satu.
Jika Anda mencetak ini, itu harus muncul seperti di atas. Ruang kosong ekstranus yang tidak memengaruhi penampilan, serta baris baru yang tertinggal, diizinkan. Anda dapat menggunakan semua huruf kecil, atau semua huruf besar.
Anda juga dapat mengembalikan ini dari fungsi sesuai aturan biasa, baik sebagai string dengan baris baru, atau daftar string.
Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
code-golf
kolmogorov-complexity
alphabet
Stephen
sumber
sumber
a<VERTICAL-TAB>b<VERTICAL-TAB>c...
? Bagaimana kalau ada beberapa karakter backspace di sana juga? Selama hasil visualnya sama?4
ruang sebelumb
, itu tidak akan terlihat sangat diagonal. Jika kelihatannya kemiringan ~-1
maka tidak masalah.Jawaban:
Arang , 2 byte
Cobalah online!
Bagaimana?
Persis jenis tantangan yang awalnya dirancang untuk Arang.
sumber
↘"abc ... xyz"q
akan menjadi program kerja terpendek. ( Coba online! )↘``26O;)q
Harus bekerja (mulai dengan backtick; untuk setiap I di 0 ... 25, pop I implisit, menambah backtick dan output), tetapi ia melempar kesalahan "tumpukan kosong" untuk beberapa alasan .. .C, 45 byte
Terima kasih kepada @Dennis karena telah menghemat 5 byte!
sumber
i
di beberapa titik. Setidaknya di TIO,f()
hanya berfungsi sekali .f(i){for(i=0;++i<27;printf("%*c\n",i,i+96));}
menghemat beberapa byte.f(i){for(i=96;i<122;)printf("%c\v",++i);}
untuk 41 byte - pastikan untuk menjalankan ini pada terminal aktual (ya, ini diizinkan )05AB1E ,
1486 byte-2 byte terima kasih kepada @Emigna
Bagaimana itu bekerja
Cobalah online!
Versi asli, 14 byte
sumber
AvyNú»
.ƶ
tampaknya begitu sempurna, tetapi itu bukan :(.Λ
mungkin belum tersedia pada saat itu, tetapi26A3Λ
menghemat satu byte.₂A3Λ
akan lebih pendek.JavaScript (ES6),
6059 byteFungsi rekursif yang mengembalikan string dengan baris baru tambahan.
sumber
n.toString(++n)+f(n)
satu byte lebih pendek darin.toString(36)+f(n+1)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):""
untuk 55."".padEnd(n-10)+n.toString(++n)
.f=(n=10,s='')=>n-36?s+n.toString(++n)+'\n'+f(n,s+' '):s
sepertinya diizinkan.Ruby , 28 byte
Cobalah online!
Penjelasan:
Operator << pada string di Ruby melakukan trik, seperti yang dijelaskan dalam Dokumentasi
str << integer → str
str << obj → str
Tambah — Memadukan objek yang diberikan ke str. Jika objek adalah bilangan bulat, itu dianggap sebagai codepoint, dan dikonversi ke karakter sebelum penggabungan.
sumber
R,
383736 byte(Penggunaan
write
ini terinspirasi oleh jawaban @ Giuseppe .)sumber
1
daripada""
mencukur byte lain.Vim, 29 byte
Cobalah online!
↵ berarti tekan tombol kembali
<Esc> artinya tekan tombol keluar
Bagaimana cara kerjanya?
sumber
+
penjelasan Anda yang membuat saya sejenak.␛
bukan<Esc>
. Itu terlihat sedikit lebih baik menurut saya.{
sebagai gantigg
Python 2 , 36 byte
Ini mengambil keuntungan dari spasi kosong yang tidak memengaruhi aturan penampilan .
Cobalah online!
Versi alternatif, 38 byte
Ini menghasilkan output yang tepat dari spec tantangan.
Cobalah online!
sumber
%*c
kerjanya?%*<identifier>
membutuhkan dua argumen: panjang untuk memasangnya dan hal yang sebenarnya untuk diganti. Beberapaprintf
implementasi bahkan memiliki fitur yang lebih tidak jelas, seperti yang%1$<identifier>
saya gunakan di sini .PHP, 39 byte
sumber
Pure Bash, 13
Di sini
^K
dan^H
adalah tab karakter kontrol ASCII tab vertikal dan backspace. Thexxd
dump script ini adalah sebagai berikut - menggunakanxxd -r
untuk menumbuhkan script yang sebenarnya:{a..z}
adalah perluasan bash brace standar untuk menghasilkana b c ... z
(dipisahkan ruang)^K
tab vertikal tetes kursor ke bawah satu baris ke posisi yang sama^H
backspace memindahkan kursor kembali satu untuk menghapus ruang pemisahCobalah online .
col
dantac
digunakan pada bagian footer untuk membuatnya ditampilkan dengan benar di jendela browser, tetapi ini tidak diperlukan di terminal reguler.Jika karakter kontrol yang tidak lazim di atas dalam output terlalu banyak untuk Anda, maka Anda dapat melakukan ini:
Bash + utilitas umum, 24
Di sini
^K
dan^H
adalah tab karakter kontrol ASCII tab vertikal dan backspace. Thexxd
dump script ini adalah sebagai berikut - menggunakanxxd -r
untuk menumbuhkan script yang sebenarnya:Cobalah online . Tab dan backspace vertikal mungkin tidak terlihat oleh browser Anda, tetapi ada di sana (tidak terlihat pada chrome, terlihat pada firefox).
col -x
menerjemahkan kembali input sehingga karakter kontrol lucu diganti dengan spasi dan baris baru untuk memberikan hasil visual yang samacol
menampilkan garis dalam urutan terbalik.tac
mengoreksi itu.sumber
^K
sebagai kursor ke atas, yang merupakan perilaku yangcol
harus ditiru di sini.col
manual menyebut VT "umpan balik baris". xterm, gnome-terminal dan terminal OSX semuanya drop-down satu garis ...Brain-Flak ,
124, 116, 106 byteCobalah online!
Penjelasan:
Jawaban ini menyalahgunakan Stack Height Nilad , tetapi dengan cara baru yang belum pernah saya gunakan sebelumnya, yang sangat saya banggakan. Selain itu, jawabannya tidak terlalu pintar.
Jadi menganalisis karakter yang digunakan dalam seni ASCII ini, sebenarnya ada tiga nilai yang sering digunakan:
32 (spasi),
64 (tambahkan 64 ke N untuk mendapatkan huruf ke-N dari alfabet), dan
10 (baris baru)
Serta 26. (jumlah loop) Dan angka-angka ini didorong di lokasi yang berbeda, jadi kami tidak bisa benar-benar menggunakan kembali nilai perantara untuk membuat angka besar lebih kecil. Dan mendorong semua untuk angka-angka ini adalah 86 byte kekalahan saja:
Ini mengerikan. Jadi, inilah cara kami membuatnya lebih nyaman. Pendekatan yang jelas adalah dengan mendorong a
32
ke tumpukan alternatif, yang membuat32
potongan kita menjadi:(<>({})<>)
dan64
potongan kita menjadi(<>({})({})<>)
. Jika kita menggabungkan 32 push awal kami dengan 26 push awal kami , kami dapat menyimpan 8 byte secara kasar. (golf pertama saya).Tapi di sinilah trik saya sangat bangga masuk Karena kita tidak menggunakan tumpukan alternatif untuk hal lain, kita mungkin juga golf 10. Untuk melakukan ini, kami akan mendorong 4 angka acak ke tumpukan tepat di awal program. Karena kami juga menekan 32, ini meningkatkan nilai
[]
nilad, menjadi 5, yang membuat10
cuplikan kami jauh lebih nyaman. Dan beruntung bagi kita, itu benar-benar memungkinkan kita memasukkan potongan golf 32 dan 26 juga!Menjadi
Jadi, inilah penjelasan terperinci:
sumber
V ,
151311 byteCobalah online!
Penjelasan
sumber
Google Sheets,
6765 byte= ArrayFormula (IF (ROW (A1: Z) = COLUMN (A1: Z26), CHAR (96 + ROW (A1: Z26)), ""))Melepaskan klarifikasi yang akan dilakukan spasi putih apa pun, saya telah menggunakan sel yang tampak kosong
Beritahu saya jika ini tidak masuk hitungan, jika saya salah mengerti jumlah byte atau jika saya mengacaukan beberapa etika karena ini adalah posting pertama saya di sini.
Sunting: Ternyata saya dapat menyimpan 2 byte dengan meninggalkan "" karena lembaran Google akan menerima nilai jika kosong.
sumber
APL (Dyalog) ,
97 byte SBCS-2 byte berkat petunjuk ngn.
[Cobalah online!] [TIO-j3o0ipjy]
⎕A
huruf besar A lphabet⌸
antara masing-masing pasangan (elemen, daftar indeks), masukkan fungsi tersembunyi berikut:↑⍨
dari elemen (surat) ambil ...∘
itu…-
nomor indeks dinegasikan karakter, yaitu bahwa banyak karakter dari belakang, padding di depan dengan spasi.Cobalah online!
sumber
↑
is{.
and⍳
isi.
Adverbs:¨
is"0
and⍨
is~
.(a.{~97+i.26){."0~-1+i.26
⌸
untuk menampilkan matriks yang tepat dan menghemat 2 byteOktaf,
2519 atau 12? byteCobalah online!
Solusi lain yang diajukan oleh @LuisMendo (12 byte) yang saya uji di Windows versi Octave:
Penjelasan:
Menghasilkan matriks diagonal dari
a:z
.sumber
Java 8,
72717061 byte-1 byte dengan mengeluarkan huruf besar alih-alih huruf kecil.
-1 byte dengan mencetak langsung, alih-alih mengembalikan String multiline.
-8 byte terima kasih kepada @ OliverGrégoire dengan menggunakan
printf
langsung untuk menyingkirkannyaString s="";
. Dan juga -1 byte dengan mengubah()->
keo->
.Coba di sini.
sumber
c=65
(atau64
sebenarnya) sehingga Anda tidak perlu angka 3 digit. Bisakah mengembalikan array alih-alih string menghemat byte karena Anda dapat menghapus+"\n"
?()->{for(int a=0;a++<26;)System.out.printf("%"+a+"c%n",a+96);}
menggunakan ide yang sama seperti pada tantangan lain .Jelly ,
109 byte-1 byte terima kasih kepada Dennis (hindari pengurangan
J
dengan menggunakan rentang yang diturunkan26Ḷ
,, secara langsung)Program lengkap yang mencetak hasilnya.
Cobalah online!
(
ØaJ’⁶ẋż
untuk 7 adalah tautan monadik yang mengembalikan daftar daftar karakter, tapi itu seperti[["a"],[" ","b"],[" ","c"],...]
yang mungkin tidak bisa diterima.)Namun, saya tidak akan terkejut jika ada cara yang lebih pendek yang belum saya pikirkan!
Bagaimana?
sumber
[["a"],[" ","b"],[" "," ","c"],...]
karena daftar karakter adalah definisi alternatif untuk string, tetapi tuple tampaknya tidak cocok :)"..."
adalah daftar karakter, jadi sebenarnya itu[[['a']],[[[' '],['b']],[[' ',' '],['c']],...]
karena Jelly tidak memiliki string, hanya daftar.26Ḷ⁶ẋżØaY
menghemat satu byte.ØaJ’⁶ẋż
untuk7
, untuk versi alternatif Anda.PowerShell, 29 byte
sumber
$_
ketika Anda mulai, bagus.Alice ,
2220 byteCobalah online!
Meskipun outputnya berupa string, ternyata mode ordinal bukanlah cara untuk menghadapi tantangan ini.
Penjelasan
Solusi sebelumnya
Cobalah online!
Saya melewati sekitar sepuluh solusi 23-byte sebelum saya dapat menemukan yang ini.
Penjelasan
Program ini menggunakan kaset untuk melacak jumlah ruang yang akan dihasilkan. Mode kardinal dan ordinal menggunakan pita yang sama, tetapi mereka memiliki kepala pita terpisah. Kedua mode memiliki interpretasi yang berbeda dari apa yang mereka lihat di rekaman itu, dan program sepenuhnya memanfaatkan perbedaan itu.
Perintah dijalankan dalam urutan berikut:
sumber
Brainfuck, 103 byte
Cobalah online!
Lokasi variabel entah bagaimana diperbaiki.
Penjelasan
sumber
Google Sheets, 69 byte
Tidak ada yang rumit di sini. Satu-satunya trik adalah menggunakan
ArrayFormula
danROW(A1:A26)
mengembalikan 26 nilai yang berbeda untukJOIN
fungsi tersebut. Output terlihat seperti ini:Saya pikir Excel 2016 dapat melakukan hal yang sama dengan
TEXTJOIN
tetapi saya tidak bisa memasukkan rumus array dalam versi online dan hanya memiliki 2013 sendiri. Rumusnya harus seperti ini:Memasukkannya sebagai rumus array ( Ctrl+ Shift+ Enter) menambahkan tanda kurung keriting
{ }
di kedua sisi, sehingga menjadi 67 byte. Siapa pun yang dapat memverifikasinya berfungsi dipersilahkan menggunakannya sebagai jawaban mereka sendiri.sumber
Seed , 6014 byte
Saya tidak berpikir ini akan memenangkan penghargaan apa pun, tetapi hanya untuk bersenang-senang, inilah solusi di Seed.
Ini diterjemahkan ke program Befunge berikut:
sumber
shortC , 33 byte
Cobalah online!
sumber
Tambahkan ++ , 1069 byte
Cobalah online!
Ya. Itu hardcode. Saya yakin ada cara yang lebih baik, dan jika Anda ingin menemukannya, silakan, tetapi cara ini tampaknya bekerja dengan baik karena Add ++ sulit untuk bekerja dengan memori.
sumber
R ,
594947 byte-10 byte berkat djhurio
-2 byte terima kasih kepada Sven Hohenstein
Mencetak ke stdout. Dikalahkan oleh user2390246
Cobalah online!
sumber
26^2
dengan676
untuk menyimpan byte.m=matrix("",26,26);diag(m)=letters;write(m,'',26)
(49 byte)cat(m,fill=27)
"diag<-"(x, y)
ini mirip dengandiag(x) <- y
. Nilai tidak ditugaskan ke variabel tetapi dikembalikan.> <> ,
46 4442 byteCobalah online!
Penjelasan
Ini adalah pengambilan yang sama sekali berbeda dari 46 byte saya sebelumnya jadi saya sudah memasukkan TIO ke satu-satunya juga. 46 byte Cobalah online!
Di bawah ini adalah tautan ke kiriman Emigna, itu adalah jawaban pertama> <> tapi saya yakin jawaban saya cukup berbeda (dan menyimpan beberapa byte) untuk menjamin yang kedua.
Jawaban Emigna
sumber
Haskell ,
66 65 58 57 4543 byteTerima kasih kepada @nimi dan @maple_shaft karena telah menghemat
1214 byte.Cobalah online!
sumber
<$
alih-alih mereplikasi:(' '<$[1..(fromEnum n-97)])
(' '<$['b'..n])
.f=
.['a'..'z']>>= \n->(' '<$['b'..n])++[n,'\n']
.PHP, 23 byte
Catatan: menggunakan pengkodean IBM-850.
Jalankan seperti ini:
Penjelasan
Buat larik semua karakter alfabet, gabungkan dengan tab vertikal sebagai lem.
sumber
brainfuck , 80 byte
Cobalah online!
Diformat:
Menggunakan fungsi generasi perkalian sederhana untuk menaruh beberapa konstanta dalam memori, kemudian mengulangi proses pencetakan ruang N kemudian
'A' + N
untukN = 0..25
.Beranotasi:
sumber
RProgN 2 , 5 byte
\ x0B adalah Vertical Tab Literal
Ini hanya mengambil huruf kecil, membaginya, dan menggabungkannya dengan tab vertikal. Ini menghasilkan efek yang dimaksudkan pada Terminal Bash tertentu.
sumber