Prospek tantangan ini adalah:
- Jika program Anda berjalan secara normal, semua kode dalam tanda bicara (
"
- tanda kutip ganda) harus dicetak. - Jika program Anda dibungkus dengan tanda kutip ganda (pada gilirannya membalikkan tanda bicara), kode yang biasanya tidak dalam tanda kutip harus dicetak.
Misalnya:
Katakanlah Anda memiliki kode berikut:
fancyStuff("myCode"); "I like".isGreat();
Jika saya menjalankannya, saya akan mengharapkan output dari:
myCode
I like
Namun, jika saya membungkusnya dengan tanda kutip, saya akan mendapatkan:
"fancyStuff("myCode"); "I like".isGreat();"
Ketika kode ini dijalankan, output yang diharapkan adalah:
fancyStuff(
);
.isGreat();
Jelas, contoh di atas bukanlah respons fungsional dalam bahasa apa pun. Tugas Anda adalah menulis kode yang berkinerja seperti ini.
Aturan
- Celah standar berlaku.
- Nilai yang dicetak, baik dalam bentuk kuotasi dan tidak kutip, harus kosong, atau hanya terdiri dari spasi putih. Ini juga berarti bahwa semua program harus menyertakan setidaknya satu set kutipan.
- Namun, trailing / whitespace sebelumnya diperbolehkan.
- Tidak melihat kode Anda sendiri, nama file yang diperlukan, dll.
- Kutipan yang tidak cocok ditolak
- Jika ada banyak string, mereka dapat dicetak sebagai baris baru (seperti pada contoh), atau dengan cara lain yang dapat dibaca manusia - tidak ada array atau objek
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
code-golf
restricted-source
quine
Geza Kerecsenyi
sumber
sumber
Jawaban:
Python 2 , 20 byte
-7 byte terima kasih kepada tsh
Cobalah online!
Jawaban lama:
Python 2 , 27 byte
Cobalah online!
Latih pemikiran di balik jawaban ini:
Mulailah dengan cetakan sederhana, karena kita perlu mencetak sesuatu .
Kita juga perlu mencetak sesuatu dalam case terbalik, yaitu. cetak di dalamnya.
Kasing non-terbalik cukup bagus pada saat ini. Mari kita fokus pada kasus terbalik. Kita sekarang mulai dengan string
print
, yang tidak dapat segera diikuti oleh pernyataan cetak. Mari kita perbaiki ini dengan titik koma.Barang bagus. Kecuali, kode terbalik tidak benar-benar mencetak apa pun. Kita perlu mencetak
print
di awal, karena berakhir dengan tanda kutip, tetapi juga mencetak apa pun yang muncul setelah kutipan kedua, karena berakhir juga dalam tanda kutip. Cara yang jelas untuk ini adalah dengan menambahkanprint
dan mengalikan string terakhir dengan 2.Sekarang kode terbalik berfungsi dengan baik, meskipun kita harus waspada terhadap kenyataan bahwa bagian sebelum kutipan pertama dan bagian setelah kutipan kedua perlu dijaga tetap sama sepanjang perubahan di masa depan. Adapun kode non-inverted, itu melempar kesalahan sintaksis - sekali lagi, kita perlu memperkenalkan titik koma untuk memisahkan ekspresi.
Python tidak benar-benar menyukai tampilan titik koma tunggal itu, jadi kita harus memuaskan rasa lapar ular dengan dua dari ekspresi no-op yang sama, dimasukkan sebelum titik koma pertama dan titik koma terakhir. Sebagian besar ekspresi akan berfungsi dengan baik dalam kasus pertama, tetapi dalam kasus kedua harus mengikuti
print";print 2*"
kode non-terbalik tanpa merusak apa pun. Kita dapat menggunakan''
, yang hanya akan digabungkan dengan string sebelumnya.sumber
print(";print('print()');")
juga 27 byte, dan juga Python 3.CSS, 66 byte
Tidak banyak pertanyaan dapat diselesaikan dengan CSS ...
sumber
body:after
juga berfungsi pada beberapa implementasi?:after
tersedia di sebagian besar browser untuk alasan kompatibilitas ke belakangHQ9 + [lihat catatan di bawah] , 1016 byte
Gunakan implementasinya di https://esolangs.org/w/index.php?title=HQ9%2B&oldid=59995 dan kompilasi juru bahasa dengan MinGW GCC 5.3.0 di Windows. Saya tidak yakin apakah itu bekerja dengan versi kompiler lain, karena perilaku C yang tidak ditentukan diperlukan untuk menghentikan program. Panjang buffer adalah 1000 byte. Dan kode sumber lebih besar dari 1000 byte melakukan trik. Saya tidak yakin bagaimana ini terjadi.
sumber
05AB1E , 4 byte
Output disatukan tanpa pemisah.
Cobalah online atau coba online dengan tanda kutip di sekitarnya .
Penjelasan:
sumber
Japt , 4 byte
Cobalah kuotasi atau dikutip
P
adalah variabel Japt untuk string kosong dans
metode mengiris string - tanpa argumen apa pun, tidak ada artinya.Atau, yang sedikit kurang sepele:
Cobalah kuotasi atau dikutip
Yang pertama huruf besar
+
dan yang kedua ditambahkanu
ke string kosong.sumber
C # (Visual C # Interactive Compiler) ,
1131121077064 byteDisimpan 5 byte berkat @negatif tujuh
Tidak dikutip dan dikutip
Setelah beberapa saat, saya menyadari bahwa solusi saya terlalu rumit. Program terbaru yang ditampilkan di sini hanya menyembunyikan sisa program dalam komentar untuk menghindari kesalahan ketika dibungkus dengan tanda kutip.
Ketika dibungkus dengan tanda kutip,
Write(
diteruskan ke metode ekstensi, yang mencetaknya bersama);
.sumber
Split()
->Trim()
, danvar a
->_
Remove
danInsert
di atasnya, sekarang saya bisa menggunakan metode ekstensi!Perl 6 , 11 byte
Cobalah online!
Mencetak
.say~
dengan baris baru yang tertinggal. Sepertinya terlalu mudah. Apakah saya melewatkan sesuatu?Ketika dibungkus dengan tanda kutip , hasilkan
say
dengan spasi dan ikuti baris baru.sumber
Foo , 4 byte
Cobalah online! Juga berfungsi di Japt.
5 byte (UTF-8)
Cobalah online! Juga berfungsi di 05AB1E.
9 byte
Cobalah online! Juga bekerja di Pesona Rise.
11 byte
Cobalah online! Juga bekerja di Perl 6.
20 byte
Cobalah online! Juga berfungsi di Python 2.
69 byte
Cobalah online! Juga berfungsi di CSS.
Hmm ... Foo adalah bahasa yang sangat mudah beradaptasi.
sumber
"a"b
1"2"
juga bekerja di Foo. Satu-satunya jawaban dalam tantangan ini yang bukan merupakan polyglot Foo sejauh ini adalah di HQ9 +, karena penerjemah Foo juga memiliki masalah meluap.> <> ,
189 byte-9 byte terima kasih kepada Jo King
Cobalah online! ( dikutip )
Penjelasan
sumber
Befunge-98 (FBBI) , 12 byte
Kutipan Tanpa Kutipan
Keduanya dicetak
<@,k4
. Salah satu (atau keduanya) dari huruf@
s dapat digantiq
.sumber
Pesona Rise , 9 byte
Cobalah online! dan
""!""$;"$;"
Dari Kevin Cruijssen, yang pada dasarnya memperbaiki upaya pertama saya memanfaatkan apa yang saya lakukan pada yang kedua.
Menuruni "fungoid tidak pernah memiliki tanda kutip tak tertandingi" aturan-membungkuk "ada sesuatu tentang hal ini yang tidak boleh apa-apa" rute, disinggung dalam komentar saya sendiri:
7 byte
Cobalah online!dan
"0".""$;"
Dalam keadaan normal, program ini dijalankan dengan
0".""$;0".""$;
menekan bilangan bulat0
, kemudian string.
, concatenate$;0
, NOP, concatenates string kosong, mencetak top-of-stack (string.$;0
) dan berakhir. Membungkusnya dalam tanda kutip menghasilkan"0".""$;"
yang mendorong string-0
, NOP, menggabungkan string kosong, mencetak top-of-stack, dan berakhir (rendering bilangan bulat yang sebelumnya tidak dicetak0
dalam bentuk string). Yang terakhir"
dibiarkan tidak dieksekusi (dan bukan bagian dari program aslinya ).Fungoid tidak memiliki string literal, mereka memiliki perintah yang mengaktifkan mode "baca sumber sendiri sebagai string" dan beberapa bentuk "penunjuk instruksi telah mencapai aturan batas sumber" (biasanya tepi-bungkus), sehingga kode sumber yang sama -positional-byte bertindak sebagai instruksi "string awal" dan "string akhir", menciptakan string literal dari seluruh baris / kolom (tidak termasuk yang
"
itu sendiri).sumber
$;
di akhir dalam versi yang dikutip."$;
dan""$;"
(Runic wrap-around quotes berpasangan dengan diri mereka sendiri).!.
(mana yang benar), tetapi tidakkah program Anda menghasilkan output penawaran0$;
? PS: Saya tidak tahu Pesona Rise sama sekali, tetapi perbaikan potensial berdasarkan tata letak Anda saat ini yang saya pikir akan valid0"!""$;"$;
( output!$;
apa adanya, atau output0$;
jika dikelilingi dengan tanda kutip). EDIT: Sebenarnya, saya pikir Anda dapat drop0
dan output!$;
dan$;
.$
adalah "print top of stack" dan;
berakhir. Tetapi Anda pada dasarnya mendapat jawaban yang valid.Haskell, 31 byte
Cobalah online! Atau terlampir dalam tanda kutip: Cobalah online!
sumber
MathGolf , 4 byte
Cobalah online!
Itu
;
danq
dapat ditukar dengan banyak perintah yang berbeda, termasuk no-ops.sumber
Ruby , 8 byte
Cobalah online!
Membungkus keluaran dalam tanda kutip, yang mungkin ilegal.
Ruby , 17 byte
Cobalah online!
sumber
JavaScript (SpiderMonkey) , 25 byte
Cobalah online!
Cobalah online!
Sepele tapi fungsional.
sumber
Japt , 4 byte
Tanpa tanda kutip, ini mengubah string
P
menjadi huruf besar. Dikutip, itu dicetaku
.Cobalah
Japt , 4 byte
Tanpa tanda kutip, itu membalik string
P
. Dikutip, itu dicetakw
.Cobalah
sumber
Q
alih-alihP
, ini lebih meta! ;)R, 16 byte
Perhatikan bahwa kode di atas tidak dibungkus dengan tanda kutip tambahan dan memiliki spasi utama dan spasi tambahan.
Cobalah (versi tidak terbungkus)
sumber
AppleScript, 9 byte
Dijelaskan:
Dikutip:
sumber