Tulis program dengan properti berikut:
Ketika dijalankan apa adanya, program tidak menghasilkan keluaran (yaitu 0 byte keluaran).
Ada lokasi di dalam program (pilihan Anda: bisa di awal, akhir, atau di suatu tempat di tengah) dengan properti berikut: memodifikasi program dengan menempatkan string apa pun di sana akan menyebabkan program yang dihasilkan untuk mencetak string itu ketika dieksekusi.
Ini harus berfungsi terlepas dari apakah string berisi tanda kutip, garis miring terbalik, tanda komentar, pembatas, byte NUL, dll .; tidak peduli apa yang Anda tempat di sana, string masih diartikan sebagai string dan dicetak seluruhnya kata demi kata. Anda dapat, bagaimanapun, gagal untuk menangani string yang sangat panjang jika mereka akan menyebabkan kompiler kehabisan memori, atau sejenisnya (tepatnya, Anda setidaknya harus dapat menangani string hingga 1000 byte panjang atau tiga kali lipat dari panjang program Anda, mana yang lebih panjang).
Contoh solusi yang tidak valid adalah
print("");
# ^ text goes here
dalam Python, Perl, Ruby, dll.; meskipun berfungsi untuk banyak string, itu tidak akan bekerja untuk string yang berisi kuotasi ganda, atau string yang berisi substring \n
(yang akan ditafsirkan sebagai baris baru).
Perhatikan bahwa masalah ini mungkin tidak mungkin terjadi di sebagian besar bahasa; tantangannya adalah setidaknya sebagian tentang menemukan bahasa di mana ia bekerja. Bahasa pilihan Anda harus merupakan bahasa pemrograman berdasarkan definisi situs ini , mis. Tidak mengirimkan solusi dalam Teks .
Karena ini adalah kode-golf , templat program terpendek menang. Namun, jangan berkecil hati mengirimkan solusi bahkan jika mereka tidak bisa mengalahkan pemenang saat ini! Anda masih dapat bersaing untuk tempat kedua, ketiga, dll., Atau hanya untuk menemukan sebanyak mungkin jawaban di mana ia bekerja. Anda harus, bagaimanapun, memastikan bahwa program Anda memenuhi seluruh spesifikasi sebelum mengirimkannya; solusi perkiraan akan melewatkan inti masalahnya.
AWK
,1
lakukan saja.Jawaban:
Excel, 1 byte
Versi tidak disatukan
sumber
@
.Jolf, 6 byte
Penjelasan
sumber
Perl 5 ,
302119 byteCobalah online!
Mengejar baris baru. Ini menggunakan fitur Perl yang memungkinkan data sewenang-wenang ditambahkan ke file sumber, yang kemudian dapat dibaca melalui
DATA
filehandle. Ketika kami memberikan filehandle sebagai argumenprint
, itu memberikan konteks daftar, yang menyebabkan filehandle mengembalikan daftar semua baris dalam file, termasuk baris baru (juga, baris baru pada baris terakhir akan dihilangkan). Kemudianprint
secara implisit menggabungkan mereka semua, membatalkan pemisahan menjadi garis-garis dan memberi kita string asli yang tepat terlepas dari di mana baris baru.Terima kasih kepada @Dada, yang menyadari bahwa tidak perlu menangani baris baru secara manual, dan @ninjalj dan @b_jonas, yang masing-masing melihat karakter yang dapat di-golf.
sumber
undef$/
. Sebagai argumenprint
,<DATA>
disebut dalam konteks daftar, sehingga harus membaca setiap baris yang ada.__END__
bukan__DATA__
.Zsh, 6 byte
Ada baris baru yang tertinggal. String dimasukkan di akhir program.
Pesta,
2017 byteTerima kasih kepada Adam karena telah menghapus 3 byte.
* skrip shell nix,
2114 byteTerima kasih kepada Adam karena telah menghapus 7 byte.
sumber
zsh
Solusinya tampak benar; Namun, solusi 9-bytebash
salah (ia menambahkan baris tambahan jika file tidak memilikinya).sed 1d
sebagai gantitail -n+2
brainfuck ( Brainfuck Tidak Dapat Dibaca ), 9 byte
Tambahkan input sampai akhir. Tidak ada baris baru, kali ini.
Mencari bahasa yang akan menerima input yang ditambahkan pada akhir program, brainfuck tampak seperti kemungkinan yang berbeda; banyak penerjemah brainfuck yang ditulis dalam esolang mengambil baik program dan input program dari input standar, dan karenanya perlu beberapa cara untuk membedakan antara mereka. Ada konvensi yang digunakan dalam kasus ini bahwa
!
karakter membedakan antara program dan input, trik yang sering digunakan untuk menulis program brainfuck pendek seperti,[.,]!Hello, world!
; ini pada dasarnya menciptakan dialek berbeda dari brainfuck yang!
memiliki arti berbeda dari normal.Secara teori, oleh karena itu, kita bisa menemukan salah satu dari penafsir ini dan memberikannya
cat
program untuk memenuhi spesifikasi. Ada kehalusan utama, meskipun; Brainfuck biasanya menggunakan nilai 256 untuk setiap sel, ada 256 oktet, dan satu harus digunakan untuk EOF. Jadi jika kita ingin dapat menggema semua 256 oktet secara harfiah, kita tidak dapat mendeteksi EOF sama sekali dan harus mengakhiri program dengan cara lain. Dengan kata lain, kita perlu menemukan implementasi yang memberikan 256 oktet dan nilai EOF 257 yang berbeda, atau crash pada EOF.Masukkan Tidak Dapat Dibaca . Ada juru bahasa brainfuck di Unreadable yang mendahului tantangan ini, dan yang menerima input setelah suatu
!
; selain itu, tidak seperti kebanyakan penerjemah brainfuck, ia menggunakan sel bignum dan -1 untuk EOF, yang memungkinkan EOF untuk dibedakan dari 256 kemungkinan oktet lainnya. Jadi, dengan menggunakan Unfreadable Brainfuck sebagai penerjemah khusus untuk program ini, kita dapat menyelesaikan tantangan hanya dalam 9 byte, melalui penulisancat
program brainfuck yang berhenti pada EOF = -1.Apakah mungkin melakukan yang lebih baik? Nah, kita bisa mencoba program 7-byte berikut ini, yang mencoba untuk mengeluarkan EOF di akhir string sebelum keluar dari loop:
Perilaku program ini tergantung pada perilaku interpreter Unreadable pada kondisi kesalahan (dengan demikian, itu tidak hanya tergantung pada implementasi brainfuck, tetapi pada implementasi yang digunakan untuk menjalankan implementasi brainfuck). Sayangnya, juru bahasa Unreadable saya menggunakan kesalahan keluaran pada keluaran standar , artinya penghematan ini tidak berfungsi. Jika ada yang tahu tentang juru bahasa yang tidak bisa dibaca yang keluar pada upaya untuk mengeluarkan EOF, atau diam-diam melewatkan upaya, beri tahu saya; itu akan menjadi solusi tujuh byte di sana.
sumber
,[.,]!
bekerja di sini dan 6 byte (cukup centang kotak yang ditandai!
). Juga berakhir.,
(baca input standar ke elemen rekaman saat ini) diikuti oleh]
(loop keluar jika elemen rekaman saat ini adalah 0). Dengan demikian, membaca byte input dengan nilai 0 (yaitu NUL) akan memutus loop.!
), secara otomatis mengatur elemen rekaman saat ini ke 0, sehingga mengakhiri loop.Dyalog APL , 11 byte
Berikut ini adalah fungsi tubuh f :
Ada baris baru, setelah itu apa pun dapat dimasukkan.
2↓
drop dua baris pertama (header dan baris ini) dari⎕CR'f'
yang C haracter R epresentation dari f⋄
kemudian→
berhentisumber
Ruby, 20 byte
Input masuk di bagian akhir (setelah baris baru) Itu
DATA
idiom adalah salah satu dari banyak yang Ruby mencuri dari Perl .Cobalah di eval.in: https://eval.in/684370
sumber
JavaScript + HTML5 DOM, 163 Bytes
Anda dapat memasukkan apa pun yang Anda suka langsung sebelum tag tubuh penutup. Ini berfungsi dengan mengambil sumber halaman dan membuka kode pembuka dan tag penutup.
Penendang yang sebenarnya sedang mencari tahu bagaimana cara melepaskan diri dari loop tanpa batas. Menempatkan
while(true){}
di halaman memblokir semua panggilan balik selamanya, membekukan eksekusi, dan JavaScript tidak memiliki cara untuk menghentikan utas utama. Namun, kode yang tidak lagi ada tidak pernah berjalan, jadi badan dokumen melakukan seppuku pada perintah terakhir, menghapus dirinya sendiri saat menunggu klonnya dimuat.Ya, ini panjang dan bundaran, tetapi fakta bahwa itu mungkin di JS agak menakjubkan.
sumber
PHP, 46 byte
(termasuk linebreak trailing)
Ya: bahkan
file
fungsinya biner safe.[""]+
mengganti indeks-0 (baris pertama file) dengan string kosongsumber
gs2 , 4 byte
Menggunakan pengodean CP437. String berjalan di akhir.
╥
mendapatkan kode sumber,¶
mendorong 4,=
menjatuhkan banyak karakter utama, dan☼
keluar.Cobalah online!
sumber
PHP 94 byte
Tempatkan string Anda setelah titik koma akhir.
Yay untuk fitur yang tidak jelas saya kira? __halt_compiler () melakukan persis seperti yang Anda harapkan dari namanya. Kode sebelumnya hanya membuka file dan menulis byte setelah titik koma terakhir ke stdout. NUL, BEL dll keluar dengan baik. Unicode literal (♪) kacau pada Windows tapi saya pikir itu hanya Windows cmd gagal di unicode.
sumber
false!==$c=...
tidak perlu tanda kurung. 3)rb
tidak perlu penawaran. 4) Anda dapat menyimpan satu byte denganfor($f=fopen(...),fseek($f,88);false!==(...);)echo$c;
5) dua byte lebih pendek:<?for($f=fopen(__FILE__,rb);false!==$s=fgets($f,86);)echo$i++?$s:"";__halt_compiler();
fgets
dan menambahkan linebreak trailing ke template.Perl 6 , 23 byte
String ditempatkan mulai dari baris baru setelah
=finish
.sumber
PHP,
4860 byteBaru menyadari bahwa penutupan PHP tidak mencegah string berisi
<?
.sumber
<?die(substr(file_get_contents(__FILE__),48))?>STRING HERE
. Harus bekerja Saya sudah mencoba<?die('a')?>
dan berhasil.die
tidak mencetak parameternya, tetapi mengirimkannya sebagai kode keluar. Itu harus ´bedie(print ...)
.file
. Sebenarnya saat ini saya tidak bisa memikirkan hal yang tidak.die('text');
Binary Lambda Calculus , 1 byte
Itu satu spasi (0x20) sebelum teks.
Cobalah online!
Bagaimana itu bekerja
0x20 = 00100000 2 diuraikan sebagai
(Jadi sebenarnya, salah satu karakter
!"#$%&\'()*+,-./
akan berfungsi sama baiknya.)Karena ini adalah ekspresi yang lengkap, sisa program ditafsirkan sebagai data input, dan di bawah konvensi I / O kalkulus lambda biner, fungsi identitas λ x. x menyalin input langsung ke output.
sumber
Bash, 17 byte
Dikembangkan secara independen dari jawaban jimmy23013 .
sumber
$0
? Selain itu, saya pikir itu berhasil (saya sudah mengkonfirmasi bahwa itu tidak menguraikan apa pun setelahexit
).RProgN , 19 Bytes
Perhatikan ruang trailing.
Masukkan teks apa pun setelah potongan itu dan itu akan dicetak.
Didasarkan dari jawaban gs2 Lynn .
Cobalah secara Online!
sumber
Excel VBA, 6 Bytes
Ini terutama untuk menjawab pertanyaan tentang bagaimana mencetak teks seperti yang ada dalam Jawaban Adam ke Jendela Segera di lingkungan VBA
Pengaturan dasar:
Di sel A1 di aktifkan, gunakan rumus di bawah ini untuk menahan string yang akan dicetak. Demi penghitungan byte, ini akan menambahkan 1 Byte
misalnya:
Fungsi Jendela Segera, 5 + 1 = 6 Bytes
+1 Byte untuk
'
sel dalam A1sumber
Vim (dalam mode ex), 28 byte
28 byte termasuk baris baru terakhir.
sumber
Vim, 738 byte
Mengembalikan semua karakter kontrol dalam mode penyisipan ke
<c-v>
, diikuti oleh karakter kontrol itu, yang akan memasukkannya secara harfiah. ^ _ (unit seperator) tampaknya tidak perlu rebinding, karena akan dikeluarkan secara default.Teks variabel datang di akhir, tentu saja.
sumber