Tantangan:
Konsepnya cukup sederhana: tulis program lengkap untuk menampilkan skor golf code-nya sendiri!
Output seharusnya hanya hitungan byte dari program Anda dan sebuah trailing bytes
.
TAPI TUNGGU ..... ada satu batasan:
- Kode sumber Anda tidak dapat menyertakan digit dari jumlah byte Anda
- Jadi jika skor Anda
186 bytes
, program anda tidak dapat berisi karakter1
,6
atau8
Contoh Output:
315 bytes
27 Bytes
49 BYTES
Aturan tambahan:
- Karakter, spasi, dan baris baru yang tidak perlu dilarang dalam kode sumber, namun spasi tambahan dan baris baru dapat diterima dengan baik dalam output
- Harus ada ruang tunggal antara angka dan
bytes
output - Huruf tidak peka huruf besar-kecil
- Tidak melakukan inspeksi sendiri atau membaca kode sumber
celah standar tidak diizinkan
ini kode-golf , jadi
Kode terpendek dalam byte menang!
bytes
saya menduga maksudnya adalah bahwa hitungan harus mencakup byte yang diperlukan untuk mencetak teks:bytes
1 bytes
atau1 byte
? (perlu diingat sudah ada 41 jawaban, meskipun saya tidak berpikir ada yang terpengaruh)Jawaban:
JavaScript, 19 byte
Oktal diciptakan untuk melayani dua tujuan:
Cobalah online!
sumber
Perl 5 , 16 byte
Ada banyak cara lain untuk mendapatkan
16
tetapi yang ini milik sayaCobalah online!
sumber
&
|
^
dan~
juga dapat diterapkan untuk string dan bekerja padanya seperti pada daftar nilai ASCII (jika dan hanya jika kedua belah pihak adalah string). Untuk|
dan^
berfungsi seolah-olah string short diperpanjang dengan\0
. Setelah itu adalah latihan sederhana untuk menemukan kombinasi huruf yang sesuai dengan hasil yang diinginkan,7 , 23 karakter, 9 byte
Cobalah online!
Ini adalah tantangan yang cukup sulit dalam bahasa yang seluruhnya terdiri dari angka, tetapi saya berhasil…
Ini hanya 9 byte dalam encoding 7's. (Sebenarnya, ini 8⅜ byte (23 × ⅜ - ¼ karena dua bit terakhir yang tertinggal 1 bit dapat dihilangkan), tetapi untuk pertama kalinya, persyaratan PPCG untuk mengumpulkan hingga seluruh jumlah byte sebenarnya merupakan keuntungan karena itu berarti bahwa 1 bit tambahan tambahan diperlukan dan karenanya tidak dilarang oleh pertanyaan.) Sebuah dump hex reversibel:
Tantangan utama penulisan program ini dalam 7 adalah bermain golf di bawah 10 byte (seperti menulis 7 tanpa menggunakan
0
atau1
cukup sulit.) Ini menggunakan struktur yang sama dengan program "Hello world" standar:Dengan kata lain, kita mulai dengan membuat dua bagian ruang data; kami memiliki dua literal, yang masing-masing mendorong urutan perintah di sana. Bagian kedua (mereka mendorong stack-style jadi push pertama = pop terakhir) adalah urutan perintah yang cukup arbitrer tetapi didorong menggunakan urutan perintah
5434004514133240105
(sehingga menghasilkan urutan data5434664574733246765
; ketika membahas 7 dalam teks, saya biasanya menggunakan font normal untuk perintah yang mendorong literal, dan berani untuk literal yang dihasilkan yang sesuai). Bagian pertama didorong menggunakan urutan perintah403
, menghasilkan463
. Kemudian bagian pertama disalin kembali ke program (perilaku implisit dari 7).Perintah
463
ini sekarang terdiri dari perintah (tebal) yang melakukan sesuatu dengan segera, bukan perintah (tidak tebal) yang hanya mendorong literal.4
mengatur ulang bagian untuk mendapatkan "string literal" kami ke bagian pertama. Kemudian0
lakukan operasi yang paling dikenal untuk 7: mengambil bagian dari ruang data, dan merekonstruksi urutan perintah yang paling mungkin membuatnya. Dalam kasus di mana urutan perintah asli adalah semua0
-5
, ini adalah 100% akurat (tidak mengherankan, karena perintah-perintah itu murni mendorong data dan dengan demikian meninggalkan bukti yang jelas tentang apa yang mereka lakukan), sehingga kami mendapatkan urutan asli kami5434004514133240105
kembali. Akhirnya,3
cetaklah.Jadi hal yang tersisa untuk dilihat di sini adalah pengkodean string. Ini memiliki bahasa khusus domain sendiri:
(Tidak ada "set karakter pilih: huruf kecil" di set karakter "digit dan simbol umum" - Anda harus menggunakan set karakter yang berbeda terlebih dahulu - jadi saya harus menggunakan huruf besar untuk bermain golf ini cukup pendek agar muat di bawah yang efektif 10) batas -byte.)
sumber
Kanvas , 8 byte
Coba di sini!
Solusi 20 byte yang lebih menarik:
Coba di sini!
sumber
brainfuck , 53 BANYAK
Cobalah online!
Pengajuan lain dengan huruf besar
bytes
. Ditemukan dengan bantuan pembantu BF-crunch yang sempurna oleh primo.sumber
PHP, 14 byte
sumber
bytes
bagian di luar?>
? Cobalah online!PHP lebih lama dari 7.2 , 13 byte
Diasumsikan pengaturan default (peringatan E_NOTICE dinonaktifkan) dan versi PHP lebih tua dari 7.2.
Perlu diterjemahkan dengan
xxd -r
Atau jika Anda lebih suka Base64
Cobalah online!
sumber
Stax , 5 byte
Jalankan dan debug itu
Dibongkar, sepertinya ini. Mode sumber yang dikemas membuat hal ini sepele dan tidak menarik.
Jika Anda tidak ingin menggunakan mode sumber dikemas,
6^p`5l@
berfungsi selama 7 byte.sumber
restricted-source
, bukan bahasa. Ini sebenarnya adalah cara paling langsung menghasilkan"5 bytes"
menggunakan Stax.R , 16 byte
Cobalah online!
sumber
bytes
". Program ini 16 byte.cat
secara default menambahkan spasi di antara inputnya.object.size
output dalam format yang benar (denganbytes
disertakan secara default). Mengganggu, terpendek aku bisa menemukan adalah 17:object.size(0)-39
. TIOobject.size(0)/3
.Python 3 ,
252418 byteCobalah online!
sumber
3*8
seharusnya baik-baik saja,05AB1E , 6 byte
Cobalah online!
Alternatif untuk
₂¤
meliputi:5>
,₁¤
,3·
sumber
Bash, 21 byte
"Baca kode sumber Anda sendiri" jelas bukan pemenangnya di sini, tetapi tidak ada orang lain yang mengirimkannya, jadi apa-apaan ini.
Cobalah online!
sumber
Retina , 15 byte
Program ini menghitung jumlah substring dengan setidaknya dua karakter dalam string "byte", dan kemudian mencetak jumlah ini dan string itu sendiri.
Cobalah online!
sumber
PHP + HTML, 16 byte
Ya, ini semakin dekat dengan penyalahgunaan celah, tapi saya merasa ini perlu diposting. Dan penggunaan PHP berarti bahwa jawaban ini secara teknis adalah ditulis dalam bahasa pemrograman Turing-lengkap. Tentu saja, bahasa templating HTML serupa lainnya akan bekerja dengan baik.
Demo langsung (tanpa PHP):
sumber
dc ,
1411 byteCobalah online!
-3 bytes oleh
@Cows quack
sumber
[ bytes]Bnn
mencukur beberapa byteMATL , 13 byte
Cobalah online!
Ini mendorong string '57 $ f} xiw 'dan mengurangi
4
, untuk mendapatkan13 bytes
. Ini dikonversi ke karakter menggunakanc
.sumber
6EV' bytes'h
adalah 12 (saya baru saja akan mempostingnya)Oktaf , 22 byte
Cobalah online!
sumber
Oktaf , 23 byte
Cobalah online!
Dan ini:
Cobalah online!
sumber
4
dari (kode ASCII)'67$f}xiw'
memberikan kode ASCII'23 bytes'
. Kemudian, menyatu dengan string kosong''
mengubah kode ASCII menjadi karakterPetit Computer BASIC, 11 byte
Menggunakan koma dalam pernyataan cetak akan memindahkan kursor ke kelipatan berikutnya dari ukuran tab saat ini. Dalam SmileBASIC, itu adalah 4 secara default, jadi ini akan menghasilkan
11 bytes
(2 spasi) tetapi PTC BASIC menggunakan 3 sebagai gantinya, sehingga output memiliki spasi yang benar.sumber
APL (Dyalog Unicode) , 12 byte
Program lengkap yang secara implisit mencetak ke STDOUT.
Cobalah online!
,⍨
ditambahkan string ke hasil perkalian. Tampilan default APL untuk data tipe campuran memberikan ruang antara angka dan teks berikutnya.sumber
Brain-Flak , 100 BYTES
Cobalah online!
Menghasilkan
bytes
bagian dalam semua penutup. Seseorang yang akrab dengan Brain-Flak mungkin benar-benar bingung dengan semua yang ada((<>))
di awal, tetapi yakinlah, mereka hanya ada untuk menyalahgunakan tumpukan tinggi nilad ([]
) dan tidak ada satupun dari yang0
mereka hasilkan dicetak.sumber
Haskell , 26 byte
Cobalah online!
29 byte
Cobalah online!
sumber
$
.Spasi , 112 byte
Hanya karena belum ada yang melakukannya:
Cobalah online!
Mencetak "BYTES" dalam huruf besar, karena huruf besar memiliki kode ASCII biner yang lebih pendek. Perintah dalam program ini, dalam notasi yang saya buat sendiri, adalah:
sumber
Java 5 atau 6, 44 byte (program penuh)
Tidak ada TIO-link, karena Java 5/6 sudah tua .. Di Java 5/6 dimungkinkan untuk memiliki enum dengan kode alih-alih metode-wajib
main
, membuatnya lebih pendek untuk tantangan program penuh.Juga kesalahan
java.lang.NoSuchMethodError: main\nException in thread "main"
dalam STDERR setelah mencetak ke STDOUT, yang baik-baik saja sesuai dengan meta (tetapi jika tantangan akan melarang kesalahan tambahan untuk STDERR,System.exit(0);
dapat ditambahkan (dan angka oktal harus diperbarui) untuk mencegah kesalahan.Disarankan oleh @ OlivierGrégoire (dan tip Java yang relevan ).
Java 8+, 74 byte (program lengkap)
Cobalah online.
Java 8+,
1615 byte (fungsi lambda)-1 byte terima kasih kepada @ OliverGégoire .
Cobalah online.
sumber
37*2
berisi7
, jadi tidak valid. Solusi alternatif Anda baik-baik saja.v->0xE+"bytes"
atauv->0xF+" bytes"
. Tidak dapat menguji tetapi harus bekerja. Tidak ada yang mengatakan skor dan "byte" harus dipisahkan.FerNANDo , 79 byte
Cobalah online!
sumber
Applescript, 15 byte
Ya, saya pergi ke sana.
sumber
Your source code can not include any of the digits from your byte count
”
karakter multibyte (3 byte di Unicode jika saya ingat dengan benar), jadi ini lebih dari 11 byte?Keempat (gforth) ,
1413 byteCobalah online!
sumber
> <>, 13 byte
Cobalah online!
sumber
Batch, 32 byte
COMSPEC
biasanya%WINDIR%\system32\cmd.exe
jadi saya mengekstrak substring dari 10 hingga 8 karakter dari akhir. Versi referensi diri 16 byte lama:Untungnya jumlah byte bukan kelipatan 10.
sumber
JavaScript,
1615 bytesumber
_=>5*3+' bytes'
5
dalam kasus itu ..