Inilah tantangan sederhana untuk Anda: Anda harus membuat representasi papan catur ASCII ini. Putih diwakili oleh karakter huruf besar, dan hitam diwakili oleh huruf kecil. Ubin kosong diwakili oleh a .
. Inilah papan lengkapnya:
rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR
Karena ini adalah pertanyaan kompleksitas-kolmogorov , Anda tidak boleh mengambil input apa pun dan Anda harus mengeluarkan board ini dengan metode default apa pun, misalnya, menyimpan file, mencetak ke STDOUT atau kembali dari suatu fungsi. Anda secara opsional dapat menghasilkan satu baris tambahan. Celah standar berlaku, dan program terpendek dalam byte!
Namun, ingat ini sama banyaknya persaingan antara pengiriman dalam bahasa yang sama. Meskipun tidak mungkin bahwa bahasa seperti Jawa bisa mengalahkan bahasa seperti perl, atau bahasa golf seperti pyth atau cjam, memiliki jawaban Java terpendek masih sangat mengesankan! Untuk membantu Anda melacak jawaban terpendek dalam setiap bahasa, Anda dapat menggunakan papan peringkat ini, yang akan menunjukkan pengajuan terpendek berdasarkan bahasa dan keseluruhan.
Papan peringkat
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda bisa menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
# Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat tautan nama bahasa yang kemudian akan muncul di cuplikan papan peringkat:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
sumber
ASCII art
papan catur akan memiliki perhentian penuh setiap kotak lainnya?Jawaban:
Jelly ,
2524 byteCobalah online!
Terima kasih kepada @Lynn karena bermain golf dengan 1 byte!
Bagaimana itu bekerja
sumber
Vim, 26 byte
irnbqkbnr<Esc>Y6p5Vr.VrpYGPgUj
Bergantung pada Vim baru, atau
5V
mungkin memilih area yang salah.irnbqkbnr<Esc>
: Tulis baris paling atas. Cukup mudah.Y6p
: Buat sisa baris, kecuali satu . Tentu saja semua kecuali baris atas dan bawah mengandung karakter yang salah.5Vr.
: Ketika Anda belum menggunakan mode visual dalam sesi ini, Anda dapat melakukan hal-hal seperti ini untuk memilih 5 baris. Jika Anda mengetik hal yang sama segera, itu akan mencoba untuk memilih 25 baris. Vim aneh seperti itu.Vrp
: Kami sudah ada di saluran 2, jadi mari kita membuat garis gadai.YGP
: Salin garis gadai ke tempatnya di bagian bawah. Inilah mengapa saya menggunakan6p
daripada7p
sebelumnya.gUj
: Memanfaatkan potongan putih.sumber
Brainfuck , 224 byte
Butuh hampir satu jam untuk mendapatkan ini.
sumber
Python 2, 63 byte
Sayangnya, pendekatan yang cukup sederhana jauh lebih pendek daripada hal-hal "pintar" yang saya coba pada awalnya ...
Jawaban bonus, juga 63 byte:
sumber
05AB1E , 24 byte
Menggunakan pengodean CP-1252 .
Cobalah online!
Penjelasan
sumber
Sebenarnya , 26 byte
Cobalah online!
Penjelasan:
sumber
Cheddar, 56 byte
Menggunakan
=>
fitur baru .Penjelasan
sumber
Pyke,
282726 byteCoba di sini!
Saya belajar sesuatu yang baru tentang bahasa saya hari ini:
1c
dapat digunakan sebagai cara 2 karakter untuk memecah string menjadi daftar karakter.sumber
MATL , 26 byte
Cobalah online!
Penjelasan
sumber
Ruby,
45441 byte disimpan berkat tuxcrafting.
Ini adalah 45
Mencoba sesuatu yang lebih pintar sepertinya membuatnya lebih lama.
sumber
puts
JavaScript (ES6),
6965 byteDisimpan 4 byte berkat edc65
sumber
'rnbqkbnrnp....PRNBQKBNR'.replace(/p|\./ig,c=>c.repeat(8)+'\n')
(ubah\n
ke baris literal)C #,
9492 byteSunting: Terima kasih untuk susu karena telah menghemat 1 byte dengan mengubah urutan string untuk menghapus spasi kosong kembali.
Sunting: Disimpan 1 byte lebih banyak dengan menambahkan parameter dummy ( x bukannya () ) untuk fungsi anonim dan memanggilnya dengan objek apa pun.
Program lengkap menggunakan fungsi di atas:
C # adalah bahasa yang sangat verbose ...
Program penuh C #, 131 byte
Tidak Disatukan:
sumber
a
danb
sebagai huruf besar maka Anda dapat menghilangkan ruang setelahreturn
:return(a+b).ToLower()+...
var
bukanstring
?var
dengan beberapa deklarasi pada satu baris. Jadistring a="rnbqkbnr\n",b="pppppppp\n",c="........\n";
akan menjadivar a="rnbqkbnr\n";var b="pppppppp\n";var c="........\n";
, yang meningkatkan jumlah byte. EDIT: Ini akan memberikan sebuah " Sebuah diketik implisit variabel deklarasi lokal tidak dapat menyertakan beberapa declarators " kesalahan .Python 2, 68 byte
Tetap memposting walaupun versi Python 2 di atas lebih pendek. Itu tidak harus menjadi satu liner untuk jumlah byte, hanya bermain dengannya.
sumber
z
hanya digunakan sekali Anda dapat menyingkirkannya dan menghasilkan titik-titik dalam pernyataan cetak.Haskell, 53 byte
a
digunakan sebagai baris pertama dan untuk menentukan panjang string yang terbuat darip
,.
danP
(-><$a
). .sumber
JavaScript (ES6), 73
.toUpperCase
terlalu panjangsumber
(r=c=>c[0].repeat(8)+
\ n,b=r
.)=>
menghemat satu byte.PowerShell v2 +, 44 byte
String yang tersisa di pipeline dicetak secara implisit
Write-Output
saat eksekusi program. Kami menyamakan dengan perilaku baris baru default untuk array untuk menghasilkan empat baris periode dengan koma-operator.sumber
,
, menciptakan sebuah array (dalam hal ini, sebuah array string). DefaultWrite-Output
pada penyelesaian program memasukkan baris baru antara elemen yang tersisa di pipa, termasuk elemen array individual. Jadi, kami menyalahgunakan perilaku keluaran default untuk tidak perlu menulis baris baru eksplisit dalam kode.V ,
27, 26 byteCobalah online!
Ini berisi beberapa karakter yang tidak dapat dicetak, jadi ini adalah versi yang dapat dibaca:
di mana
<esc>
mewakili0x1B
. Penjelasan:sumber
Emotinomicon, 89 byte
Sedihnya Emotinomicon tidak memiliki fungsi tumpukan duplikat. Akan bermanfaat. Namun setidaknya lebih pendek dari Jawa. :)
Penjelasan:
sumber
Brain-Flak ,
366350 + 3 = 353 byteCobalah online!
Ini mendapat plus 3 karena membutuhkan
-A
bendera untuk berjalan dengan baik.Penjelasan
sumber
((((((((((((((((((((()()()()()){}){}){}()){})[()()()()])[([][][]){}])[][][])[]()())[[][][]])[][])()()()())<([]()())>[()()]))))))))
yang saya pikir akan menghemat 16 byte. Ini tidak menggunakan tumpukan alternatif sama sekali, jadi mungkin bisa lebih pendek.Python 3.5, 56 byte
Ini menggunakan ide oleh zawata untuk mengkodekan setiap baris
(r*8)[:8]
, dengan string yang diulang 8 kali dan dipangkas menjadi panjang8
. Pion dan baris kosong hanya'p'*8
,'.'*8
dan'P'*8
, tanpa pemangkasan. Baris pertama menggunakan'rnbqkbn'
, dengan('rnbqkbn'*8)[:8]
memasukkan benteng lain di sebelah kanan saat dikalikan dan dipangkas. Baris terakhir adalah sama tetapi ditulis dengan huruf besar.Kami mengungkapkan daftar bagian-baris dengan ringkas
['rnbqkbn','p','.','.','.','.','P','RNBQKBN']
menggunakan pembongkaran umum Python 3.5 . Kami menulis entri pertama dan terakhir, dan yang satu karakter yang tersisa diurai dari sebuah string.Dalam Python 2, kita bisa
split
menerima 60 byte:sumber
Python 3,
828075 BytesBukan jawaban terpendek dalam python tetapi ini adalah yang pertama dan saya pikir itu cukup bagus untuk pertama kalinya
sumber
[:8]for i in['rnbqkbn'....
'rnbqkbn p . . . . P RNBQKBN'.split()
.Batch, 105 byte
Batch benar-benar bertele-tele ...
sumber
R, 75 byte
Sunting: Memperbaiki kesalahan konyol dan cukup menuliskan bagian huruf besar dari papan sekarang.
sumber
\n
Powershell,
8273 bytesumber
*per
hal itu sebelumnya, dan google tidak memberi saya petunjuk. Punya penjelasan?J,
5552 byteTes dan langkah menengah
sumber
Python 3, 64 byte
Didasarkan jawaban DLosc ke Python 2 seperti pada saya, saya tidak bisa memperbaiki.
1 byte lebih sedikit dibandingkan dengan menggunakan "\ n" .gabung
sumber
q, 51 byte
sumber
-1 flip"p...P"{y,x,upper y}/:"rnbqkbnr";
. 40 byte Solusi yang bagus!GNU sed, 54 byte
Cobalah online!
Penjelasan:
Potongan hitam dicetak terlebih dahulu, menyimpan dua peringkat papan terkait dalam urutan terbalik di ruang penahanan. Potongan putih dicetak dengan mengubah ruang penahanan menjadi huruf besar.
sumber
Java 7,
1039989 byte10 byte disimpan dibandingkan dengan keluaran hardcod berkat pendekatan @SLC dalam jawaban C # nya .
Coba di sini.
Keluaran:
sumber
String f(){return"rnbqkbnr\npppppppp\n........\n........\n........\n........\nPPPPPPPP\nRNBQKBNR";}
. Ini adalah 100 byte .C #,
85848374 byteSunting: Secara tidak sengaja memiliki terlalu banyak baris ruang kosong!
Sunting: Membebaskan karakter tambahan dan memperbaiki pemesanan (secara tidak sengaja semuanya terbalik) terima kasih banyak kepada @KevinCruijssen
Sunting: Dikembalikan ke 83 karena saya memiliki udang di jalur yang salah
Sunting: Terima kasih kepada @adrianmp yang membantu saya mengecilkannya lebih jauh dengan menghilangkan return
Menggunakan format yang sama dengan jawaban @adrianmp di atas:
Program lengkap menggunakan fungsi di atas:
sumber
return "
, sehingga menjadi:x=>{return"rnbqkbnr\npppppppp\nxxxxPPPPPPPP\nRNBQKBNR".Replace("x","........\n");};
. Jawaban yang bagus, jadi +1 dari saya. Dan nikmati masa tinggal Anda di sini. :)x=>"rnbqkbnr\npppppppp\nxxxxRNBQKBNR\nPPPPPPPP".Replace("x","........\n");