Tantangan
Tulis program lengkap yang menulis dua kali lebih banyak byte ke output standar sebagai panjang program.
Aturan
Program harus menulis karakter ASCII ke output standar.
Isi dari output tidak masalah.
Outputnya, diukur dalam byte, harus tepat dua kali panjang program, juga diukur dalam byte, kecuali jika Anda memenuhi bonus.
Setiap baris baru yang tertinggal dimasukkan dalam jumlah byte keluaran.
Bonus
Program Anda secara opsional dapat mengambil nomor n
,, sebagai masukan. Jika demikian, output harus persis n * program length
byte. Anda dapat mengasumsikan bahwa n akan selalu menjadi bilangan bulat positif. Jika tidak ada input yang disediakan, n
harus default ke 2.
Jika Anda melakukan ini, Anda dapat mengurangi 25 byte dari skor Anda.
Kemenangan program terpendek.
Batasan
Tidak ada celah standar.
Panjang program minimal harus 1 byte.
Tidak menambahkan spasi putih yang tidak perlu ke kode sumber untuk mengubah panjangnya. Demikian pula, komentar tidak masuk hitungan.
Kecuali Anda memenuhi bonus, program tidak boleh menerima input. Jika Anda memenuhi bonus, integer harus menjadi satu-satunya input.
Skor terendah (panjang program dalam byte - bonus) menang.
Jawaban terpendek untuk setiap bahasa menang untuk bahasa itu .
Papan peringkat
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard biasa dan gambaran umum pemenang berdasarkan bahasa.
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 dapat menyimpan skor lama di headline, dengan mencoretnya. Misalnya:
# 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
n * program length
byte, atau apakah itu minimum?Jawaban:
HQ9 + , 2 byte
output
Saya pikir tidak dilarang di sini.
sumber
QQ
ke juru bahasa.Shakespeare, 768
Ya, Shakespeare tidak banyak bahasa golf. Output 1.536 ruang.
Edit: 256
Oke, saya akan benar-benar golf itu. Perhatikan bahwa hal di atas tidak dikompilasi dalam implementasi Shakespeare yang ada karena saya menulisnya dengan susah payah (tetapi siap untuk mempertahankan kebenarannya.)
Di bawah ini diterjemahkan ke C dengan satu peringatan di spl-1.2.1, dan menghasilkan 512 spasi:
sumber
Ingat, 17 byte
16 NOOP. Kemudian debugger
!
dipanggil dan membuang memori ke konsol. Memori kosong, tetapi panjang header 34 byte:Coba di sini .
sumber
Mathematica REPL, 1 byte
Cetakan
#1
.sumber
CJam, -17 byte
Kode sumber panjangnya 8 byte dan memenuhi syarat untuk bonus -25 byte .
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Python 2.6, 10
Cetakan
-0.10000000000000001
, yaitu 20 karakter.Perhatikan bahwa string repr menunjukkan lebih presisi.
print-.1
hanya memberi-.1
, danprint.1/3
memberi0.0333333333333
hanya 13 digit akurasi.sumber
print`+.1`
?Seed , 10 byte
Ini mengkompilasi ke program Befunge (ditemukan oleh brute force)
yang menghasilkan 20 byte berikut saat dijalankan (diuji dalam CCBI, perhatikan ruang trailing):
Menjadi tidak terbiasa dengan Befunge 98, saya harus memeriksa spesifikasi beberapa kali untuk yang satu ini:
k
tampaknya cukup rusak bagi saya, mengeksekusi sekali lagi daripada yang dimaksudkan karena IP pindah ke instruksi yang berulang.
output sebagai angka, diikuti oleh spasisumber
R,
32 byteKode
Keluaran
Wow, akhirnya R, akhirnya.
Tampaknya
{}
bekerja juga, hasilnyaNULL
Bonus
3316 byte:Kode
Keluaran
sumber
Matlab,
75 byte2 byte lebih sedikit, terima kasih ke @ flawr!
Keluaran:
Outputnya berisi , jadi 10 byte.
newline
ans =
newline
newline
3
newline
sumber
format compact
default :)format loose
apakah preferensi default123;4
? Apakah tiga byte lebih pendek =)JavaScript, 2 byte!
Bahkan lebih pendek dari solusi 3 byte:
Kembali
true
setelah berjalan.sumber
Python 2, 11
Cetak representasi string dari built-in
id
, yaitu 22 karakter:The
*1
adalah untuk mendapatkan kode untuk 11 karakter. Anda juga bisa melakukannyaprint id;00
.Alternatif 11 yang lebih membosankan adalah:
sumber
print.8/-9j
satu karakter pendekprint id,;1
cukup untuk menekan baris baru. Itu tidak menambahkan spasi tambahan juga.print 9**21
tidak berfungsi. Ini 21 karakter.print 9**23
bekerja meskipundc, 10 - 25 = -15
Mengambil baris kosong untuk "tidak ada input".
Menghitung 10 ^ (10 * n) - 1, di mana n adalah input, atau 2 jika input kosong. Mencetak string
9
s dari panjang yang diperlukan.2
tekan 2 ke tumpukan jika input kosong?
tekan input ke tumpukanA
dorong 10 ke tumpukan (dc memiliki pintasanA
-F
untuk 10 - 15)*
pop dua kali dan gandakan (gandakan input dengan 10)A
dorong 10 ke tumpukanr
membalikkan dua elemen tumpukan teratas^
exponentiate 10 ^ (10 * input)1-
kurangi 1 dari atas tumpukann
cetak tanpa baris baru.sumber
n
sajap
.TI-Basic, 3 byte
Cetakan
100000
.sumber
0
untuk 1 byte.ᴇ3
? Dan @ lirtosiast, karena TI-Basic tidak memiliki baris baru, saya ragu tentang itu.Brainfuck, 14 byte
Ini adalah latihan matematika kecil. Mari kita tunjukkan jumlah
+
karakter dalam kode dengana
, dan jumlah.
karakter berdasarkanb
.Kode ini menghasilkan
a*b
byte, dengan nilai daria
bawah ke1
(ini adalah byte non-ASCII, tetapi tampaknya OK sesuai dengan spesifikasi). Panjang kode adalaha+b+3
. Jadi kita punyaMencoba nilai yang berbeda untuk
a
danb
, kami melihat bahwa minimum untuka+b+3
tercapaisumber
+[[>....]-<<+]
opsi.gs2 , -18 bytes
CP437 :
W↕0!↨.2
Hex dump:
57 12 30 21 17 2e 32
W
membaca angka dari STDIN ke dalam daftar.↕0
menambahkan 2 ke daftar, dan!
mengekstrak elemen pertama. Kemudian↨.
(daftar[0,1,2,3,4,5,6]
) diulangi (2
) berkali-kali.Ini sangat mirip dengan jawaban CJam Dennis - gs2 hanya menggabungkan
r
dani
menjadi satu byte.Catatan : Saya harus memperbaiki bug dalam
gs2
implementasi agar ini berfungsi: sebelumnya, setiap program memiliki baris baru tersembunyi pada hasilnya, yang sepenuhnya tidak disengaja. Itu hanya muncul setelah saya mencoba untuk menyelesaikan program ini (bahasa ini dirancang untuk golf anarki, yang mengabaikan jalur baru di semua masalah), dan saya hanya mendorong perbaikan untuk dikuasai sekarang, jadi jangan ragu untuk mengambil jawaban ini dengan sebutir butir garam.sumber
Perl 5, 16 byte - 25 = -9
Ini adalah pendekatan yang aneh untuk masalah ini.
Jalankan dengan
-p
argumen baris perintah.Saya melihat jawaban Perl di bawah ini yang menggunakan variabel khusus untuk mencetak lebih banyak teks - dan dengan demikian mempersingkat jumlah byte mereka. Jadi saya menggunakan variabel khusus yang jauh lebih verbose. Mencetak 8 karakter dengan nama variabel 2 karakter. Jadi, dengan hitungan byte 16 (diisi dengan satu karakter spasi putih untuk membuatnya 16), ia mencetak
2 * $]
, di mana$]
versi Perl dicetak sebagai5.xxxxxx
, tergantung pada versi Perl Anda. Tanpa input, ia mencetaknya empat kali, sama dengan8*4
atau32
, yang dua kali lipat jumlah byte kode.Saya suka Perl.
sumber
pop
danshift
bekerja pada@ARGV
(dalamsub
mereka bekerja@_
) sehingga Anda bisa melakukan sesuatu seperti$n=pop||2
mendapatkan blok kode pertama, dan Anda memiliki;}
pada akhirnya , yang hampir selalu bisa hanya}
untuk menyelamatkan yang lain. Sesuatu yang mungkin membantu Anda menghemat lebih banyak karakter adalah operator pengulangan stringx
, pertimbangkanprint 1x20
atau sesuatu seperti itu ... :) Semoga membantu!print"n"x(21*pop||42)
. Jalankan di baris perintah denganperl -e'print"n"x(21*pop||42)' 3 | wc -c
Pyth ,
109 - 25 = -16-1 oleh Dennis
Mencetak [input] * 9 karakter kutipan, atau 2 * 9 jika input kosong.
isaacg memiliki jawaban yang lebih pendek di sini
Pyth , 1 byte
Cetakan
10
. Ini adalah variabel bawaan yang menginisialisasi ke 10.sumber
Q
menyebabkan Pyth untuk mengevaluasi input sebelum kode aktual dieksekusi.**N9.xvz2
berfungsi seperti yang diharapkan, tetapi tidak lebih pendek dari**N9?zvz2
.T
output10
dan baris baru. Gunakand
, ini adalah ruang yang menambahkan baris baruMacaroni 0.0.2 , 23 karakter
Mencetak 32 9 dalam biner, yang kebetulan ternyata 46 karakter panjangnya (itu
1000000000000000000000000000000000000000000000
), tanpa baris tambahan.sumber
JavaScript, 4 byte
Saya pikir ini adalah solusi JS sesingkat mungkin tanpa ES6: P
sumber
v0.10.40
tidak mencetak apa-apa karena tidak ada perintah cetak. Apakah Anda memiliki versi Node.js yang berbeda atau apakah ini hanya berfungsi di shell yang mencetak evaluasi suatu baris? (dalam hal ini saya tidak berpikir jawaban ini akan valid).C,
2725• Terima kasih @Titus untuk merobohkan 2 byte
Dan untuk solusi 16 byte saya yang tidak bersaing di C, buka di sini: https://codegolf.stackexchange.com/a/111330/16513
^ Saya katakan non-bersaing karena kode kesalahan mungkin bisa bergantung pada kompiler Anda, Juga perhatikan saya menggunakan GCC dalam solusi itu. Juga saya tidak yakin apakah itu melanggar aturan 1 atau tidak, saya pikir itu mungkin jadi saya melanjutkan dan menandainya tidak bersaing.
sumber
main(){printf("%0.XXf",0);}
berfungsi.#include
. Kompiler akan memancarkan peringatan, dan terkadang akan macet, tetapi biasanya akan berfungsi .V , 2 Bytes
Ini output
Cobalah online!
Penjelasan
Ini adalah jawaban yang benar-benar gila, dan bekerja dengan menyalahgunakan bagian dalam V. Pada dasarnya cara kerjanya adalah itu
ÿ
adalah perintah dalam V yang menandakan program sudah selesai, dan semua perintah yang tertunda harus diselesaikan. Kalau tidak, beberapa akhiran implisit tidak akan berfungsi, dan interpretasi akan lebih sering menggantung. Perintah ini secara otomatis dikirim beberapa kali pada akhir program, dan sebagian besar waktu tidak berpengaruh pada output.é
adalah perintah yang memasukkan satu karakter. Namun, ia melakukannya dengan mengambil byte mentah, jadi itu tidak menafsirkanÿ
sebagai "akhir", itu menafsirkannya sebagai "ini adalah karakter yang perlu Anda masukkan."4é
membuatnya memasukkan karakter ini 4 kali, bukan satu.sumber
bash, 11 byte
Berikut ini adalah penggunaan yang ironis dari alat kompresi data :) ...
gzip -f<<<2
Berikut ini adalah hex dump dari output (22 byte) ...
sumber
dc, 19 - 25 = -6
Mengambil nomor (2 didorong ke stack sebagai cadangan) dan mengalikannya dengan 19. Mencetak
1
(tidak ada baris baru) dan mengurangi nomor tersebut. Loop sementara jumlahnya lebih besar dari 0.sumber
C ++, 80 byte
perhatikan karakter baris baru adalah dua karakter. (jika Anda tidak menginginkannya, ubah i <20 menjadi i <= 19 untuk kembali ke jumlah byte yang sama.)
Output sampel (akan berubah setiap saat)
alamat memori 8 karakter yang sama 20 kali.
sumber
for
loop lebih pendek dari satuwhile
loop dan memungkinkan Anda menjatuhkan kawat, itu sedikit lebih murah untuk digunakancstdio
dan hanyaprintf
sebuah string, dan Anda tidak perlu mengembalikan apa pun.#include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}
Tetapi sudah ada jawaban yang lebih pendek dengan pendekatan yang sedikit berbeda.CJam, -9
Penjelasan
q_,
Membaca seluruh input dan mendorongnya, lalu mendorong panjangnya.
{i}{;2}?
Jika panjang input lebih dari nol, konversikan ke integer. Kalau tidak, pop input dan tekan 2.
G*
Tekan 16 (panjang program), lalu gandakan dengan 2 jika tidak ada input, atau oleh input.
'X*
Tekan X dan gandakan dengan bagian atas tumpukan.
sumber
q2e|i
akan memberi Anda nomor yang Anda inginkanr_{i}2?SB**
.> <> , 19 + 2 (-v flag) - 25 = -4 byte
coba di sini!
Terima kasih Cole dan Sp3000
Pertama periksa panjang tumpukan, jika 0 menempatkan 2 di tumpukan. Lipat gandakan dengan 21 (panjang kode), lalu tampilkan representasi unicode dari angka tersebut dan kurangi dengan 1, putar hingga 0. (Anda harus memeriksa output untuk melihat karakter, karena browser tidak akan menampilkannya)
sumber
l0=?2f6+*v
sebagai baris pertama dan1-::0=?;o>
sebagai yang kedua harus membuatnya benar.?!
biasanya lebih baik daripada0=?
JavaScript (ES5), 68 byte - 25 bonus = 43
(Jika browser Anda tidak mengizinkan snippet berjalan karena alasan keamanan, coba biola ini http://jsfiddle.net/thePivottt/c3v20c9g/ )
Skrip ini hanya berfungsi di browser yang mengikuti setidaknya DOM3 (dengan
Node.textContent
) dan ECMAScript 5 (atau mungkin versi yang lebih lama). Saya mencoba untuk membuat ini sesuai standar dan kompatibel mungkin. Ini juga mengasumsikan bahwa skrip berada discript
elemen pertama dokumen.Ini sebenarnya menggabungkan beberapa salinan dari skrip itu sendiri, yang cukup mengagumkan . Perhatikan bahwa alat cuplikan pada SE menempatkan spasi kosong tambahan di sekitar skrip. Kita bisa mengabaikan spasi putih itu dengan
.trim()
tetapi saya tidak merasa perlu mengingat program ini sempurna tanpa campur tangan SE. Simpan saja file HTML5 ini jika Anda ingin melihatnya berjalan dengan sempurna.Script ini menggunakan
prompt
danalert
karenaconsole.log
itu bukan bagian dari standar apa pun, bahkan jika sebagian besar browser modern menggunakannya. Jika jumlah pengulangan yang lewat bukan angka yang valid atau kosong, standarnya adalah 2. Jika inputnya angka desimal, program macet karena panjang array yang tidak valid.Kode menggunakan beberapa fitur JavaScript yang menarik:
Array(1+(+prompt()||2))
Array(INT)
menciptakan Array sel INT.+prompt()
mengambil input dan mengubahnya menjadi angka. Jika kita melewatkan input sebagai string,Array
fungsi itu hanya akan membungkusnya dalam array satu elemen.+prompt()||2
mengembalikan input jika truthy , yang lain itu kembali 2.Seluruh kode ini menciptakan array elemen N kosong, di mana N adalah satu lebih dari jumlah pengulangan yang diminta.
.join(document.scripts[0].textContent)
Metode array
join(STRING)
menciptakan string dengan menggabungkan semua sel, menempatkan STRING yang disediakan di antara nilai-nilai. Dalam program ini, ada N + 1 elemen kosong dalam array, atau tepatnya N di antara titik. Hasilnya akan berupa string yang berisi N kali STRING yang disediakan.document.scripts[o]
adalah<script>
elemen pertama dari dokumen.The
textContent
dariNode
kasus mengembalikan seluruh teks ditemukan di dalam mereka dan node anak mereka, termasuk script.sumber
str.repeat
dan masih menampilkan kode itu sendiri, skornya turun menjadi 26, tapi agak terlalu membosankan: PJavaScript ES6, 33 - 25 = 8
Cobalah online!
sumber
33
sebenarnya adalah panjang kode. Itu menciptakan array baru dengan panjang di33*a
manaa
parameter input default ke 2 sesuai OP, mengisinya, dan mengembalikan string yang bergabung.Arrary(1+a*<length>)
danjoin`0`
Julia, 42 byte - 25 = 17
Ini membaca baris dari STDIN menggunakan
readline()
. Jika kosong, artinya tidak ada input yang disediakan, maka n didefinisikan sebagai input yang dikonversi ke integer. Jika tidak n adalah 2. Kami kemudian mencetak 42 n@
s ke stdout.sumber
Perl, 18 - 25 = -7
Variabel khusus
$=
, alias$FORMAT_LINES_PER_PAGE
, memulai kehidupannya sebagai60
, dan oleh karena itu hanya perlu digandakan setengah kali dari byte yang dibutuhkan.sumber
print$=x9x(pop||2)
bagus!