Tantangannya adalah menemukan serangkaian karakter yang tidak dapat muncul dalam program hukum apa pun dalam bahasa pilihan Anda. Itu termasuk komentar, string, atau bagian "tidak dapat dieksekusi" lainnya.
Tantangan
- Program Anda mungkin khusus untuk versi tertentu atau implementasi lingkungan kompiler / juru bahasa / runtime bahasa Anda. Jika demikian, harap jelaskan keterangannya.
- Hanya opsi kompiler / interpreter / runtime standar yang diizinkan. Anda tidak dapat mengirimkan beberapa flag aneh ke kompiler Anda untuk mendapatkan hasil tertentu (mis. Melewati flag untuk mengubah peringatan menjadi kesalahan).
- Jika bahasa pemrograman Anda memerlukan penyandian khusus (mis. UTF-8), string Anda juga harus disandikan dengan benar (mis. String yang gagal semata-mata karena kesalahan pengodean karakter tidak diperbolehkan).
- Setiap karakter individu dalam kiriman Anda harus diterima dalam program hukum; yaitu, Anda tidak bisa hanya menggunakan karakter yang selalu ditolak.
- Compiler / interpreter / runtime harus memberikan kesalahan ketika diberi kode sumber apa pun yang berisi string Anda sebagai substring. Kesalahan tidak harus sama di seluruh program - satu penyisipan string Anda dapat menyebabkan kesalahan sintaks, sementara yang lain mungkin menyebabkan kesalahan runtime.
Mencetak gol
- String ilegal terpendek untuk setiap bahasa menang.
- Anda harus menjelaskan mengapa string Anda ilegal (mengapa tidak dapat muncul di mana pun dalam program hukum).
- Sengketa solusi yang salah dalam komentar. Lebih khusus lagi, Anda harus memberikan tautan ke TIO atau yang setara dengan menunjukkan program hukum (yaitu program yang tidak menghasilkan kesalahan) yang berisi substring yang diajukan.
- Beberapa bahasa (misalnya Bash, Batch, Perl) memungkinkan data biner sewenang-wenang ditambahkan ke program tanpa mempengaruhi validitas (misalnya menggunakan
__DATA__
dalam Perl). Untuk bahasa seperti itu, Anda dapat mengirimkan solusi yang hanya dapat muncul di bagian trailing tersebut. Pastikan untuk mencatatnya dalam jawaban Anda. (Definisi "bagian tambahan" ini tergantung pada bahasa, tetapi umumnya berarti teks apa pun setelah pengurai sepenuhnya berhenti membaca skrip).
Contoh
Dengan Python, saya bisa mengirimkan
x
"""
'''
tetapi ini dapat tertanam ke dalam program yang lebih besar
"""
x
"""
'''
y
'''
jadi tidak bisa diterima.
code-challenge
restricted-source
nneonneo
sumber
sumber
Jawaban:
Changeling , 2 byte
Itu dua umpan garis. Valeling Changeling harus selalu membentuk kuadrat sempurna karakter ASCII yang dapat dicetak, sehingga tidak dapat berisi dua baris baris secara berturut-turut.
Kesalahan selalu merupakan kesalahan parser dan selalu sama:
disertai dengan kode keluar 1 .
Cobalah online!
sumber
Java, 4 byte
Cobalah online!
Ini adalah urutan keluar Unicode yang tidak valid dan akan menyebabkan kesalahan dalam kompiler.
sumber
"\\u;"
.\uXXXX
lolos sebelum melakukan hal lain, jadi ya, ini akan bekerja bahkan di dalam comments.zaCOBOL (GNU) , 8 byte
Pertama, umpan baris untuk mencegah Anda meletakkan kata saya di baris komentar.
Kemudian, secara historis, program COBOL dicetak pada lembar pengkodean, kompiler sangat bergantung pada garis terbatas 80 karakter, tidak ada komentar multiline dan 6 karakter pertama adalah komentar (sering digunakan sebagai nomor baris yang dapat diedit), Anda dapat meletakkan hampir apa saja di sana , AFAIK. Saya memilih
THEGAM
di awal baris berikutnya.Kemudian, simbol ke-7 di setiap baris hanya menerima daftar karakter yang sangat terbatas: Spasi (tidak ada efek), Asterisk (komentar pada sisa baris), Hyphen, Slash, mungkin ada yang lain, tetapi tentu saja tidak
E
.Kesalahan yang diberikan oleh GnuCobol, misalnya, adalah:
Cobalah online!
Juga, Anda baru saja kehilangan permainan.
sumber
Also, you just lost the game.
Saya hampir kalah suaraJavaScript, 7 byte
Perhatikan baris baru terkemuka.
\u)
adalah urutan jalan keluar Unicode yang tidak valid dan inilah sebabnya string ini tidak valid//
di awal masih tidak akan berfungsi karena baris baru terkemuka, meninggalkan baris kedua tidak dikomentari/*
tidak akan menghapus tanda komentar string sepenuhnya karena penutupan*/
yang menyelesaikannya, meninggalkan\u)
terbuka/
setelah string, jadi dengan memiliki)
di depan\u
, kita dapat memastikan bahwa regex literal akan selalu tidak valid1||1(string)/
untuk menghindari keharusan mengevaluasi regex. Semi-titik dua di awal baris kedua menghentikan hal itu terjadi dengan mengakhiri ekspresi1||1
sebelum menyentuh baris kedua, sehingga memaksa SyntaxError dengan;*
.Cobalah!
Tampilkan cuplikan kode
sumber
/* */\u0045 = 3
tampaknya kode JavaScript yang valid.3 */\u;/
masih valid/
(bukan bahwa Anda perlu memperbaikinya). (Juga, yang;
tidak memaksa penguraian regex yang buruk, itu memaksa Sintaksis dengan*
.)#if 0
seperti yang terlihat di sini: Cobalah online!Python, 10 byte (bukan cpython)
Perhatikan baris baru terkemuka. Tidak dapat dikomentari karena baris baru, dan tidak ada kombinasi dari string yang dikutip tiga kali jika saya memikirkan hal ini dengan benar.
@feersum di komentar tampaknya telah benar-benar merusak program cpython di Windows sejauh yang saya tahu dengan menambahkan karakter 0x1A ke awal file. Tampaknya mungkin (?) Ini disebabkan cara karakter ini ditangani oleh sistem operasi, tampaknya diterjemahkan ke EOF saat melewati stdin karena beberapa standar DOS lama.
Dalam arti yang sangat nyata ini bukan masalah dengan python tetapi dengan sistem operasi. Jika Anda membuat skrip python yang membaca file dan menggunakan builtin
compile
di dalamnya, itu memberi perilaku yang lebih diharapkan dari melemparkan kesalahan sintaksis. Pypy (yang mungkin hanya melakukan ini secara internal) juga melempar kesalahan.Sunting:
Karena ketekunan @ feersum dalam menemukan cara-cara yang tidak jelas untuk memecahkan interpreter Python, jawaban ini benar-benar tidak berlaku untuk lingkungan cpython khas sejauh yang saya tahu! (Python 2 dan 3 untuk Windows dan Linux) Saya masih percaya bahwa celah ini tidak akan berfungsi untuk Pypy pada platform apa pun (satu-satunya implementasi Python lain yang telah saya uji).
sumber
"""?'''"""
C (dentang) , 16 byte
Cobalah online!
*/
menutup/*
komentar apa pun , dan ruang utama memastikan kami tidak hanya memulai satu. Baris baru menutup setiap//
komentar dan memecah string literal apa pun. Kemudian kita menyebabkan kesalahan#else without #if
atau#else after #else
(terlepas dari berapa banyak#if 0
kita mungkin berada di dalam).sumber
-std=c99
, tapi mari kita coba beralih ke dentang.R"foobar(...)foobar"
dan hanya paren kanan yang diikuti oleh delimeter yang cocok dan sebuah kutipan akan menutupnya.Pyth, 6 byte
¡
adalah karakter yang tidak diimplementasikan, yang berarti bahwa jika parser Pyth pernah mengevaluasinya, itu akan kesalahan keluar dengan PythParseError. Kode memastikan ini akan terjadi pada salah satu dari¡
.Ada tiga cara byte dapat hadir dalam program Pyth, dan tidak diuraikan: Dalam string literal (
"
atau."
, yang diuraikan secara setara), dalam Python literal ($
) dan segera setelah a\
.Kode ini mencegah
\
dari membuatnya mengevaluasi tanpa kesalahan, karena itu hanya mempengaruhi byte berikut segera, dan¡
kesalahan kedua .$
embed kode dalam$
s ke kode Python dikompilasi secara langsung. Saya tidak membuat asumsi tentang apa yang mungkin terjadi di sana.Jika program mencapai kode ini dalam
$
konteks, itu akan berakhir di$
, dan¡
setelah itu akan membuat kesalahan parser. Literal Python Pyth selalu berakhir di berikutnya$
, terlepas dari apa yang mungkin dilakukan kode Python.Jika program dimulai dalam
"
konteks,"
kehendak membuat akhir string, dan final¡
akan membuat kesalahan parser.sumber
Ada - 2 byte
Saya pikir ini harus berhasil:
Itu garis bawah-garis bawah. Newline mengakhiri komentar dan tidak diizinkan dalam sebuah string. Garis bawah tidak dapat mengikuti spasi putih; dulu hanya diizinkan setelah huruf dan angka, tetapi pengenalan Unicode membuat segalanya menjadi rumit.
sumber
x86 kode mesin 32-bit, 11 byte (dan 64-bit masa depan-bukti)
Ini adalah
times 9 nop
/ud2
. Ini pada dasarnya kereta luncur NOP , sehingga masih berjalan sebagai 0 atau lebihnop
dan kemudianud2
untuk meningkatkan pengecualian, terlepas dari berapa banyak0x90
byte yang dikonsumsi sebagai operan ke opcode sebelumnya. Instruksi byte tunggal lainnya (sepertitimes 9 xchg eax, ecx
) juga akan berfungsi.x86 kode mesin 64-bit, 10 byte (CPU saat ini)
Ada beberapa instruksi ilegal 1-byte dalam mode 64-bit, sampai beberapa ekstensi ISA di masa depan mengolahnya kembali sebagai awalan atau bagian dari multi-byte opcodes dalam mode 64-bit saja, terpisah dari artinya dalam mode 32-bit.
0x0e
adalahpush cs
dalam mode 32-bit, tapi ilegal pada CPU saat ini (diuji pada Intel Skylake) di 64-bit.Interpretasi aturan untuk kode mesin yang dapat dieksekusi :
Bytes tidak dapat dilompati (seperti pembatasan "tidak diuraikan"), karena CPU tidak menaikkan pengecualian sampai mereka benar-benar mencoba untuk mendekode / mengeksekusi (non-spekulatif).
Berarti ilegal selalu menimbulkan pengecualian, misalnya pengecualian instruksi ilegal. (Program nyata dapat menangkapnya dengan handler pengecualian pada logam kosong, atau menginstal handler sinyal OS, tapi saya pikir ini menangkap semangat tantangan.)
Ini berfungsi karena byte-string yang lebih pendek yang diakhiri
ud2
dapat muncul sebagai imm32 dan / atau bagian dari mode pengalamatan untuk instruksi lain, atau dibagi menjadi sepasang instruksi . Paling mudah untuk memikirkan hal ini dalam hal apa yang dapat Anda masukkan sebelum string untuk "mengonsumsi" byte sebagai bagian dari instruksi, dan meninggalkan sesuatu yang tidak akan salah.Saya pikir sebuah instruksi dapat mengkonsumsi paling banyak 9 byte dari hal-hal yang berubah-ubah: byte SIB, disp32, dan imm32. yaitu 2 byte pertama dari instruksi ini dapat mengkonsumsi 8 NOP dan ud2, tetapi tidak 9.
Tidak bisa mengalahkan 9 nops:
Mode 64-bit:
Tetapi byte untuk 8 NOPs + ud2 (atau
times 9 db 0x0e
) dapat muncul sebagai bagian dari insns lain:sumber
ud2
? Tampaknya Anda mengatakan bahwa Anda menafsirkan aturan sebagai melarang melompati byte, jadiud2
akan bekerja dengan baik sendiri, bukan? Oh ... Saya kira Anda mengatakan masalahnya adalah apakah ituud2
dapat muncul sebagai awalan untuk instruksi yang valid? Bagian kedua dari jawaban ini agak sulit bagi saya untuk mengerti.ud2
dapat muncul dalamimm32
instruksi apa pun. Saya sedang memikirkan hal ini dalam hal byte apa yang dapat Anda tempatkan sebelum string yang "mengkonsumsi"0f 0b
sebagai bagian dari instruksi sebelumnya dan bukan decoding sebagaiud2
. Saya tidak sepenuhnya senang dengan bagaimana saya akhirnya mempresentasikannya, tetapi saya ingin menggambarkan mengapa hanya 8nop
detik saja tidak cukup, dan apa yang terjadi dengan 9nop
detik +ud2
.%else
/%else
mungkin berhasil dikalahkan%if 0
, yang biasanya dapat melindungi teks yang tidak valid agar tidak diuraikan. (ide dari jawaban CPP)C #, 16 byte
Berfungsi karena:
//
komentar tidak akan berfungsi karena baris baru/*
komentar tidak akan berfungsi karena*/
#if false
ke awal tidak akan berhasil karena#endif
"
menutup setiap string literal<#@#>
adalah direktif tanpa nama sehingga gagal untuk template T4./
di awal tidak akan menipu*/
Setiap variasi gagal dengan kesalahan kompilasi.
sumber
APL dan MATL dan Fortran , 3 byte
Newline, Kutipan, Newline selalu membuat kesalahan karena komentar blok tidak ada:
unbalanced quotes
string literal not closed
Invalid character in name
sumber
Literate Haskell , 15 bytes
Memperbaiki upaya yang dihapus oleh nimi.
Cobalah online!
Upaya asli nimi adalah dua baris terakhir, berdasarkan Literate Haskell yang tidak mengizinkan
>
kode gaya melek huruf berada di garis tetangga ke baris komentar melek (di5
sini). Gagal karena dapat disematkan dalam komentar dengan gaya pengkodean literasi alternatif ("LaTeX"):Namun,
\begin{code}
gaya Literate Haskell tidak bersarang, baik dalam dirinya sendiri maupun dalam{- -}
komentar multiline, jadi dengan meletakkan garis\end{code}
tepat sebelum baris dengan5
, penyelesaiannya gagal, dan saya tidak melihat yang berbeda.sumber
Gratis Pascal, 18 byte
Pertama tutup semua komentar yang mungkin, kemudian tangani kompilasi bersyarat.
Beri komentar di sini jika saya lupa sesuatu.
sumber
begin end.
.end.
valid menjadi diizinkan oleh pertanyaan.Commodore 64 Basic, 2 byte
(itu baris baru diikuti oleh huruf "B").
Setiap baris dalam program Commodore 64 harus dimulai dengan nomor baris atau kata kunci BASIC, dan program yang disimpan hanya mengizinkan nomor baris. Tidak ada kata kunci yang dimulai dengan "B" (atau "H", "J", "K", "Q", "X", "Y", atau "Z").
sumber
=0
maka ini hanya menjadi pernyataan tugas ...Brain-Hack (variasi Brain-Flak ),
32 byteTerima kasih kepada Wheat Wizard karena menunjukkan bahwa Brain-Hack tidak mendukung komentar, menyelamatkan saya satu byte.
Cobalah online!
sumber
#
TIO(()){()}
.CJam , 7 byte
Cobalah online!
sumber
VBA, 2 Bytes
Linefeed diikuti oleh garis bawah -
_
berfungsi sebagai karakter kelanjutan garis dalam VBA, dan karena tidak ada apa pun di baris langsung ke kiri atau di atas kelanjutan garis, ditambah dengan kurangnya komentar multiline VBA berarti bahwa ini akan selalu membuang kompilasi kesalahan waktuCompile Error:
Invalid character
sumber
_
, hanya saja tidak ada garis yang valid ke kiri atau di atasnyamyfunction(
\n_
)
:?Public Function Foo( ByVal bar as Integer, _
(baris baru)bas as long) as double
- jadi ya, itu akan menghasilkan kesalahan jika Anda memanggil fungsi yang Anda jelaskanmyfunction( _
\n_
)
. Maaf bila membingungkan. Dengan kata lain, Anda harus menggunakan dua baris baru.SmileBASIC, 2 byte
Tidak ada yang berlanjut melewati akhir baris, jadi yang Anda butuhkan hanyalah istirahat baris diikuti oleh sesuatu yang tidak bisa menjadi awal dari sebuah pernyataan.
!
adalah operator logis bukan, tetapi Anda tidak diizinkan untuk mengabaikan hasil ekspresi, sehingga bahkan sesuatu seperti!10
tidak valid (saatX=!10
bekerja, tentu saja)Hal serupa akan bekerja dalam bahasa apa pun di mana semuanya berakhir di akhir baris, asalkan kode tersebut diurai sebelum dijalankan.
Ada banyak karakter alternatif yang dapat digunakan di sini, jadi saya pikir akan lebih menarik untuk mendaftar karakter yang BISA valid.
@
adalah awal label, misalnya@DATA
,;(
dapat menjadi bagian dari ekspresi seperti(X)=1
yang diizinkan karena alasan tertentu; huruf apa pun atau_
bisa berupa nama variabelX=1
, panggilan fungsiLOCATE 10,2
, atau kata kunciWHILE 1
;'
adalah komentar; dan?
merupakan kependekan dariPRINT
.sumber
INTERCAL , 12 byte
Cobalah untuk memecahkannya secara online!
Pendekatan INTERCAL untuk kesalahan sintaks agak istimewa. Pada dasarnya, pernyataan yang tidak benar tidak akan benar-benar salah kecuali program mencoba untuk mengeksekusinya. Faktanya, sintaksis idiomatis untuk komentar adalah memulainya
PLEASE NOTE
, yang benar-benar baru memulai pernyataan, menyatakan bahwa itu tidak akan dieksekusi, dan kemudian mulai dengan suratE
. Jika kode Anda adaDODO
di tengah-tengahnya, Anda bisa menambahkanDOABSTAINFROM(1)(1)
dan menempelkan pernyataan yang valid di bagian akhir dan Anda akan baik-baik saja, jikaDODODO
Anda bisa membengkokkan eksekusi di sekitarnya sebagai(1)DON'TDODODOCOMEFROM(1)
. Meskipun INTERCAL tidak memiliki sintaks literal string untuk menghindarinya, tidak ada cara untuk menggunakan kesalahan sintaks untuk membuat string ilegal, bahkan melelahkan setiap kemungkinan nomor baris dengan(1)DO(2)DO...(65535)DODODO
, karena tampaknya sangat mungkin untuk memiliki nomor baris duplikat denganCOME FROM
bekerja dengan mereka.Untuk membuat string ilegal, kita benar-benar perlu menggunakan pernyataan sempurna berlaku:
TRY AGAIN
. Bahkan jika itu tidak dieksekusi, itu harus menjadi pernyataan terakhir dalam sebuah program jika itu ada di dalam program sama sekali. 12 byte adalah, sepengetahuan saya, string terpendek yang dapat digunakanTRY AGAIN
, karena harus menjamin bahwa ada pernyataan setelah itu (dieksekusi atau tidak) jadiDOTRYAGAIN
hanya kode normal, dan perlu memastikan bahwa seluruh pernyataan memangTRY AGAIN
, jadiTRYAGAINDO
tidak berfungsi karena dapat dengan mudah diubah menjadi kesalahan sintaksis normal yang diabaikan:,DON'TRYAGAINDOGIVEUP
atauPLEASE DO NOT TRY TO USE TRYAGAINDO NOT THAT IT WOULD WORK
. Tidak peduli apa yang Anda masukkan di kedua sisiDOTRYAGAINDO
, Anda akan kesalahan, dengan baikICL993I I GAVE UP LONG AGO
,ICL079I PROGRAMMER IS INSUFFICIENTLY POLITE
atauICL099I PROGRAMMER IS OVERLY POLITE
.sumber
ICL993I I GAVE UP LONG AGO
.COME FROM
setiap label garis, mungkin agak sulit untuk mengalihkan aliran kontrol di sekitar blok, tetapi sama sekali tidak menghentikan Anda dari hanyaGIVING UP
!AWK , 4 byte
Cobalah online!
Karena
AWK
tidak memiliki metode untuk melakukan komentar multi-baris, perlu 2 baris baru sebelum dan 1 setelah/
untuk mencegah komentar keluar atau mengubahnya menjadi sebuah regex, misalnya menambahkan1/
. Pesan yang paling umum adalah `baris tak terduga atau akhir string.Dengan celah sebelumnya
sumber
Fortran, 14 byte
Tidak ada komentar multiline atau arahan preprosesor di Fortran.
sumber
JavaScript (Node.js) ,
98 byteCobalah online!
Saya pikir ini cukup ilegal.
Upaya JS sebelumnya dalam jawaban lain
Penjelasan
Ini dengan sendirinya ilegal, dan juga memblokir semua tanda kutip tunggal dan ganda karena tanda kutip itu tidak dapat melewati garis tanpa
\
di akhir barisdan
Memblokir komentar dengan memperkenalkan urutan pelarian ilegal
Memblokir backtick awal dengan memperkenalkan huruf RegExp yang tidak diakhiri
Blok tag templat literal dengan memperkenalkan operator yang diharapkan antara dua backticks
sumber
Rockstar ,
45 byteDicoret 4 masih 4 :(
Rockstar adalah bahasa yang sangat ... bertele-tele.
Meskipun
"
dapat digunakan untuk mendefinisikan string, sepertiPut "Hello" into myVar
, setahu saya tidak ada cara untuk 3 kutipan muncul di luar komentar, dan paren dekat memastikan itu tidak akan terjadi juga (Komentar di Rockstar terlampir dalam tanda kurung, seperti ini).Rockstar juga memiliki sintaks literal puitis, di mana tanda baca diabaikan, sehingga baris baru memastikan bahwa 3 tanda kutip adalah awal dari baris kode, yang harus selalu tidak valid
sumber
(()""")
, bukankah itu no-op?""")
diuraikan sebagai kode, yang tidak validGoethe says )"""
valid .)
dan"""
Powershell,
1081214131416 byte-2 byte terima kasih kepada Mazzy menemukan cara yang lebih baik untuk memecahkannya
+4 -1 byte terima kasih kepada IsItGreyOrGray
Saya harap ini berhasil.
'
dan"
untuk menjaga terhadap tanda kutip,#>
untuk memecah blok-komentar, baris baru untuk menghentikan komentar satu baris, keduanya'@
dan"@
untuk menangkap gaya string lain, dan kemudian memulai array yang tidak tepat untuk melempar kesalahan sintaksis.Logikanya adalah mereka tidak dapat menggunakan salah satu set kutipan untuk masuk, mereka tidak dapat memblokir-berkomentar, Jika
@"
digunakan, itu akan membuat string di sini yang tidak dapat memiliki token setelahnya, dan jika mereka biarkan saja, itu akan mencoba membuat array yang rusak. Pernyataan ini ingin hidup begitu keras, saya terus menemukan lebih banyak lubang di baju besi.sumber
@=
Pesona Rise, 3 byte
Salah satu dari banyak variasi yang mungkin.
Cobalah online!
Runic menggunakan unicode yang menggabungkan karakter dalam "
M
memodifikasi perilakuC
" (di manaC
adalah perintah). Dengan demikian, tidak ada dua pengubah yang diizinkan untuk mengubah perintah yang sama dan parser akan melempar kesalahan jika kejadian tersebut ditemukan.Demikian pula, perintah tertentu yang mengarahkan ulang IP tidak dapat dimodifikasi dengan cara apa pun, karena keberadaan pengubah arah memodifikasi karakter (dan keduanya di sel yang sama tidak masuk akal).
Tidak ada cara untuk melarikan diri atau menyesuaikan ukuran string agar valid. Tio tautan berisi
;
untuk memotong kesalahan "tidak ada terminator" prioritas tinggi.sumber
TI-Basic (83 + / 84 + / SE, 24500 bytes)
(24500 kali)
TI (-83 + / 84 + / SE) -Basic melakukan sintaks hanya memeriksa pernyataan yang
End
dicapai , sehingga bahkan 5.000 pernyataan dalam satu baris dapat dilewati dengan aReturn
. Ini, sebaliknya, tidak dapat masuk ke dalam RAM TI-83 + / 84 + / SE, jadi tidak ada program yang dapat memuat string ini. Menjadi sedikit konservatif dengan jumlah karakter di sini.TI-83 asli memiliki 27000 byte RAM, jadi Anda perlu 27500
A
dalam hal ini.TI-Basic (89 / Ti / 92 + / V200, 3 byte)
Baris baru, kutipan, baris baru. Baris baru menutup komentar apa pun (dan melarang menanamkan karakter ilegal ke dalam string, karena konstanta string multiline AFAIK tidak diperbolehkan), baris baru ini melarang menutup string, dan kutipan tersebut memberikan kesalahan sintaksis.
Anda bisa mendapatkan 2 byte dengan
tanpa baris baru, tapi saya tidak yakin apakah ini diperhitungkan karena
±
hanya valid dalam konstanta string.sumber
Pergi , 6 byte
Cobalah untuk memecahkannya secara online!
Aksen kubur (`) menandai string string literal, di dalamnya semua karakter kecuali`, termasuk baris baru dan garis miring terbalik, ditafsirkan secara harfiah sebagai bagian dari string. Tiga `s berturut-turut adalah intinya: string literal yang berdekatan tidak valid dan` selalu menutup string ` , jadi tidak ada cara untuk memahaminya. Saya harus menggunakan 3 byte lagi untuk anti-circumvention, sebuah baris baru sehingga kita tidak bisa berada di dalam komentar baris tunggal atau string yang dikutip normal, dan tanda * / jadi kita tidak bisa berada di dalam komentar multi-baris.
sumber
SILOS , 4 byte
Silo kompetitif \ o /
SILOS beroperasi dengan interpreter / kompiler dua pass Sebelum dieksekusi, "kompiler" mencoba menyederhanakan sumber menjadi sebuah array yang menggambarkan sumber. Setiap baris diperlakukan secara terpisah. x + a adalah operator penugasan yang akan menambahkan ea ke nilai x dan menyimpannya ke x. Namun "kompiler" akan rusak. Oleh karena itu, kami mengambil string ini dan menambahkan baris baru sebelum dan setelah memastikan itu pada barisnya sendiri dan merusak kompiler.
Cobalah online!
sumber
ax+
salah?AutoHotkey , 5 byte
`adalah karakter pelarian. Anda hanya bisa keluar dari "ketika menugaskannya ke variabel.
\ n * / mencegahnya agar tidak dikomentari atau ditugaskan ke variabel.
sumber
JavaScript, 11 karakter
Backtick memastikan untuk membunuh string template, kutipan menghilangkan string, baris baru menghindari komentar baris, akhir komentar menghindari komentar blokir, dan backtick terakhir dan melarikan diri (dengan! Untuk menghindari menambahkan nomor) mencoba untuk memulai tidak valid tali.
Cobalah online!
sumber
)
setelah\u
, mungkin itu akan berhasil di sini?