Dalam sesedikit mungkin byte, tulislah sebuah program atau fungsi yang menampilkan berikut ini:
Abcdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwxyZ
abcdefghijklmnopqrstuvwxYz
abcdefghijklmnopqrstuvwXyz
abcdefghijklmnopqrstuvWxyz
abcdefghijklmnopqrstuVwxyz
abcdefghijklmnopqrstUvwxyz
abcdefghijklmnopqrsTuvwxyz
abcdefghijklmnopqrStuvwxyz
abcdefghijklmnopqRstuvwxyz
abcdefghijklmnopQrstuvwxyz
abcdefghijklmnoPqrstuvwxyz
abcdefghijklmnOpqrstuvwxyz
abcdefghijklmNopqrstuvwxyz
abcdefghijklMnopqrstuvwxyz
abcdefghijkLmnopqrstuvwxyz
abcdefghijKlmnopqrstuvwxyz
abcdefghiJklmnopqrstuvwxyz
abcdefghIjklmnopqrstuvwxyz
abcdefgHijklmnopqrstuvwxyz
abcdefGhijklmnopqrstuvwxyz
abcdeFghijklmnopqrstuvwxyz
abcdEfghijklmnopqrstuvwxyz
abcDefghijklmnopqrstuvwxyz
abCdefghijklmnopqrstuvwxyz
aBcdefghijklmnopqrstuvwxyz
Abcdefghijklmnopqrstuvwxyz
Newline tambahan diizinkan. Anda dapat menemukan referensi implementasi Python ungolfed di sini .
code-golf
kolmogorov-complexity
Absinth
sumber
sumber
Jawaban:
Pyth, 12 byte
Demonstrasi.
Dalam Pyth,
G
adalah huruf kecil.+Gt_G
adalahabcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba
, karakter yang perlu ditulis dalam huruf besar di setiap baris.V
mengatur a for loop di atas string ini, denganN
sebagai variabel loop.Di dalam tubuh,
XGNrN1
adalah fungsi terjemahan string.X
menerjemahkanG
, alfabet, menggantikanN
denganrN1
, versi huruf besar dariN
.r ... 1
adalah fungsi huruf besar. Ini memberikan output yang diinginkan.sumber
C, 73
Terkadang pendekatan yang paling sederhana adalah yang terbaik: cetak setiap karakter satu per satu. ini mengalahkan banyak bahasa yang seharusnya tidak perlu.
penjelasan
sumber
Python 2, 69 byte
Bagus dan sederhana, saya pikir.
sumber
Brainfuck (8bit), 231 byte
Ok, jadi itu tidak akan pernah menjadi yang terpendek, tapi bagian yang terpenting ... kan ?!
Cobalah di sini (pastikan untuk mencentang 'Memori dinamis')
sumber
>
menggeser satu sel ke kanan, misalnya.MS-DOS Binary, 61
Kode ini tidak harus dikompilasi, kode ini akan berjalan dalam MS-DOS jika Anda menulisnya ke file bernama wave.com. Kode dalam hex:
Atau, jika Anda lebih suka sesuatu yang lebih mudah dibaca, berikut adalah cara memproduksinya menggunakan debug.exe (baris kosong setelah kode penting):
sumber
Ruby:
71686563 karakterContoh dijalankan:
sumber
puts f=(e=*?a..?z).map{|c|(e*"").tr c,c.upcase},f[0,25].reverse
Matlab,
605854 byteDengan terima kasih kepada Dennis Jaheruddin karena telah menyelamatkan saya 4 byte.
sumber
char(x)
dengan[x '']
menyimpan byte.end-1
merupakan cara yang agak verbose untuk menulis 25![x '']
triknya sama sekali tidak biasa bagi saya. Tapi sekarang saya ingat melihatnya di salah satu jawaban Anda :-)SWI-Prolog, 136 byte
Menyalahgunakan mundur untuk mengulang ...
sumber
Haskell
1008988 byteFungsi pembantu lambda
\(h,c:t)
mengambil sepasang daftar nilai ascii dan menggabungkan keduanya, tetapi dengan nilai pertama dari daftar kedua dikapitalisasi. Fungsi utama membagi alfabet huruf kecil (diberikan dalam ascii,97..122
) di setiap posisi0,..,24,25,24,..,0
dan memanggil lambda di setiap langkah. Sebelum mencetak setiap nilai diubah menjadi karakter yang sesuai.sumber
Scala
110109 karaktersumber
foreach println
kemkString("\n")
, dan output string sebagai nilai kembali bukan mencetaknya ke layarSQL (postgreSQL),
107101Hasilkan adalah seri dari -25 hingga 25 dan gunakan nilai absolut untuk mengganti karakter dengan versi huruf besar mereka. Berkat manatwork untuk tip tentang operator @.
sumber
@
operator?Haskell, 81 byte
Menghitung byte seperti yang dilakukan @nimi;
f
adalah tindakan IO yang mencetak output yang diinginkan.sumber
Pyth -
1817 bytePass pertama, mungkin bisa dibuat lebih pendek. Penggunaan
X
untuk menggantikan danr1
memanfaatkan.Cobalah online di sini .
sumber
MATLAB - 58 byte
Mirip dengan solusi Luis Mendo , tetapi menggunakan kemampuan penyiaran
bsxfun
.Mengambil keuntungan bahwa dalam ASCII, perbedaan antara huruf kapital dan huruf kecil persis 32 nilai dari satu sama lain, kami pertama-tama menghasilkan huruf kecil dari kode ASCII 97 hingga 122 yang merupakan kode ASCII dari huruf kecil a ke huruf kecil z dengan hormat, lalu membuat 51 baris matriks yang berisi 26 kode ASCII dari 97 hingga 122. Oleh karena itu, setiap baris dari matriks ini berisi urutan nilai numerik dari 97 hingga 122. Selanjutnya, kita membuat matriks lain di mana setiap baris ke-1 dari matriks ini berisi 32 di kolom ke- i . 26 baris pertama dari matriks ini memiliki pola ini, yang pada dasarnya adalah matriks identitas dikalikan dengan 32. Fungsinya
eye
menciptakan matriks identitas untuk Anda. 25 baris terakhir dari matriks ini adalah matriks identitas berskala yang diputar 90 derajat.Dengan mengambil matriks identitas khusus berbobot ini dan mengurangkannya dengan matriks pertama, lalu mengonversi kode ASCII yang dihasilkan menjadi karakter, urutan "Topi Meksiko" yang diinginkan dihasilkan.
Contoh Jalankan
Anda juga dapat menjalankan contoh ini menggunakan lingkungan Octave online IDEone. Oktaf pada dasarnya adalah MATLAB tetapi gratis: http://ideone.com/PknMe0
sumber
rot90
- dipikirkan dengan baik!J,
3123 byte8 byte disimpan berkat @Mauris.
Cobalah online di sini.
sumber
u:|:(97+i.26)-32*=|i:25
(monad=
benar-benar berguna di sini!)=
sini. Itu sangat bagus!Perl, 51 byte
50 byte kode + 1 byte parameter baris perintah
Dapat digunakan sebagai berikut:
Atau online di sini (catatan saya harus menambahkan
,"\n"
ini karena saya tidak bisa menambahkan -l arg).Metode yang jauh lebih lama Sebelum versi singkat di atas, saya mencoba metode yang berbeda yang akhirnya cukup tebal. Saya meninggalkannya di bawah untuk referensi.
86 kode byte + 1 byte baris perintah arg
Perl Pertama saya pernah bermain golf dengan benar, jadi saya membayangkan ada banyak hal yang dapat dilakukan dengannya - tolong sarankan perbaikan!
Dapat digunakan sebagai berikut:
Atau online di sini (perhatikan saya harus menambahkan. "\ N" untuk ini karena saya tidak bisa menambahkan -l arg).
Penjelasan
Pendekatan umum adalah dengan menggunakan substitusi regex untuk melakukan semua kerja keras. Kami memulai dengan:
Ini cocok
(([A-Z])|0)(\D)
dan akan diganti dengan\U\3
(\ U berubah menjadi huruf besar) untuk memberikan:Dari titik ini dan seterusnya, kami terus mencocokkan regex yang sama dan menggantinya dengan
\L\2\U\3
:Sekarang pergantian kedua dari regex cocok,
(.)((?2))(1)
(yang sama dengan(.)([A-Z])(1)
). Kami ganti dengan\U\4\6\L\5
memberi:Ini terus mencocokkan dan mengganti sampai kami mencapai:
dan tidak ada lagi pertandingan regex.
Pada setiap titik dalam loop kita melepas tanda '1' dan mencetak.
sumber
PHP,
877169 byteBukan yang terpendek, tetapi berfungsi sebagaimana dimaksud.
Terima kasih kepada @manatwork untuk beberapa tips untuk mengurangi ukurannya dengan banyak.
Dan terima kasih kepada @Blackhole , ukurannya dikurangi 2 byte.
Tidak persis cantik, tetapi berhasil.
sumber
join()
parameter pertama.$i<25?$i:25-($i-25)
→25-abs($i-25)
for(;$i<51;){$L=range(a,z);$L[25-abs($i++-25)]^=" ";echo join($L),"↵";}
(Hanya bungkus baris di mana saya menggunakan "↵" dalam kode.)\n
itu ada di sana. Inisialisasi$i
dibiarkan sebagai kecelakaan. Dan terima kasih banyak untuk25-abs($i-25)
. Saya tidak akan sampai di sana sendirian.for
Loop Anda dapat dioptimalkan:for(;$L=range(a,z),$L[25-abs($i++-25)]^=' ',$i<52;)echo join($L).'↵';
(-2 byte).PowerShell 3.0, 82 byte
sumber
TIS Node Tipe T21 Arsitektur -
216215 byteSaksikan beraksi di sini! Ada
DOWN
dalam video itu yang kemudian saya mainkan golfANY
, tetapi secara fungsional identik.Bahasa ini tidak memiliki konsep string atau karakter, jadi saya harus menunjukkan bahwa saya menggunakan nilai ASCII, yaitu output dimulai
97, 66, 67
...88, 89, 90, 10, 65, 98
...Berikut kode dalam format penyimpanan data TIS-100, untuk tujuan penilaian:
Penjelasan
sumber
JavaScript ES6, 121 byte
Ini sangat panjang karena lebih masuk akal untuk mengubah kode alfabet daripada menggunakan panjang yang tidak masuk akal
String.fromCharCode
untuk menghasilkan karakter. Uji di bawah dengan cuplikan Stack, yang menggunakan ES5 yang didukung lebih baik dan di bawah.sumber
CJam, 23 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
R,
7870Ditingkatkan oleh @MickyT
sumber
M=replicate(26,c(letters,"\n"))
daripada matriks. Ini akan menghemat beberapa bytewrite
: tio.run/##K/r/…Perakitan Linux, 289
Sayangnya tidak bersaing dengan bahasa tingkat tinggi dan mungkin jauh dari optimal, tetapi cukup mudah. Jalankan menggunakan
nasm -f elf64 -o a.o wave.S; ld -s -o a a.o; ./a
(biner yang dihasilkan hanya berukuran 568 byte):sumber
perakitan x86 untuk DOS, 41 Bytes dikompilasi
Biner:
Kode sumber, simpan sebagai "wave.asm", kompilasi dengan "nasm -f bin -o wave.com wave.asm" dan jalankan dengan "dosbox wave.com"
sumber
C #,
140139135132Diperluas
Disimpan 1 byte berkat @ Gunther34567 menggunakan ternary, bukan
if
Disimpan 4 byte kemudian bersarang terner itu di dalam loop dan memindahkan alfabet ke luar loop
Disimpan 3 byte menggabungkan deklarasi integer berkat @eatonphil
sumber
if(i==25)d=-1;
ked=i==25?-1:d;
var d=1
keint d=1,i
.Bash:
7666 karakterContoh dijalankan:
sumber
printf
panggilan. Saya menolak hasil edit , sehingga Anda dapat mengujinya sendiri.Sed:
135119116111 karakter(109 kode karakter + 1 opsi baris perintah karakter + 1 input karakter.)
Contoh dijalankan:
sumber
Javascript (ES6), 113 byte
110 byte
102 byte
Sekolah tua tidak terkalahkan kecuali kita akan memiliki operator jarak / fungsi / generator / apa pun di js
100 byte
Sayangnya Math.abs terlalu panjang
9694 byteMeskipun saya sudah kalah dalam pemilihan tanpa penjelasan, saya melanjutkan perjuangan saya
Kami dapat memangkas beberapa byte dengan mengatur ulang instruksi loop:
sumber
Perl -
9564 byteMengambil keuntungan dari fakta
\u
membuat karakter berikutnya dicetak huruf besar dalam Perl.Berkat manatwork karena telah menyimpan 31 byte dan memperbaikinya (kode saya sebelumnya tidak berfungsi.)
sumber
\u
tampaknya bekerja dalam sampel terpisah, tetapi tidak dalam kode Anda. :( Semua karakter tinggal huruf kecil. Bisakah Anda menunjukkan kepada kami bagaimana kode Anda harus dieksekusi? (Saya memasukkannya ke dalam file kemudian memanggilnyaperl
dengan nama file, tanpa switch.) Omong-omong, saya menggunakanperl
5.20.2.\u
diikuti oleh surat untuk mengubah dalam string literal yang sama:for$c(0..50){$n=1;print map{++$n==27-abs$c-25?"\u$_":$_}a..z,$/}
q (37 karakter)
Potongan pertama
sumber
@[.Q.a;;upper]@'x,1_reverse x:til 26
selama 36 byte . Atau@[.Q.a;;.q.upper]@'x,1_|x:!26
untuk 29 byte di K4.