Stax , 11 byte (Nilai 4)
'''cc'~~'dd
Jalankan dan debug online!
Merupakan kehormatan bagi saya untuk memiliki jawaban pertama (secara kronologis) untuk tantangan ini dengan skor lebih tinggi dari atau sama dengan 4. Mungkin skornya bisa lebih tinggi lagi.
Dalam Stax, string literal yang terdiri dari satu karakter ditulis dengan '
, demikian '', 'c, 'd, '~
juga semua string literal. Perintah yang sesuai untuk c
d
dan ~
berarti menduplikasi bagian atas tumpukan utama, pop bagian atas tumpukan utama, dan pop bagian atas tumpukan utama dan tekan masing-masing ke tumpukan input. Untuk tantangan ini, tumpukan input tidak mempengaruhi output dan tidak penting, maka kita dapat mengatakan d
dan ~
identik.
Penjelasan
Cara terbaik untuk membagi kode menjadi beberapa bagian dan mempertimbangkannya secara terpisah.
Ketika tidak dirusak, '''cc
mendorong literal '
dan literal c
ke tumpukan utama, dan menduplikasi bagian atas, sehingga tumpukan akan menjadi (dari bawah) c,c,'
.
Ketika tidak dirusak, '~~
mendorong literal ~
dan kemudian muncul (dan dorong ke tumpukan input), yang pada dasarnya adalah no-op untuk tumpukan utama.
Ketika tidak dirusak, 'dd
dorong literal d
dan kemudian muncul, no-op lain untuk tumpukan utama.
Pada akhir program, karena tidak ada output eksplisit yang dilakukan, bagian atas tumpukan utama akan dicetak secara implisit.
Jika program berjalan apa adanya, tumpukan final masih c,c,'
dan akan ditampilkan c
.
Jika bagian pertama menjadi ''cc
, maka kita memiliki literal '
, dan dua instruksi penyalinan, tumpukan terakhir akan menjadi ',','
. Mengingat bahwa dua bagian lainnya adalah no-op, hasilnya adalah '
.
Jika bagian pertama menjadi '''c
, hasilnya pada dasarnya sama dengan yang tidak teramplas, tetapi c
tidak digandakan. Jadi tumpukan akan menjadi c,'
. Setelah dua no-op, bagian atas tumpukan adalah c
.
Jadi kita dapat mendeteksi radiasi pada bagian pertama.
Bagian kedua dan bagian ketiga bekerja dengan cara yang persis sama. Saya akan mengambil bagian ketiga sebagai contoh.
Jika bagian ketiga dirusak, maka dua bagian pertama disimpan apa adanya dan tumpukan sebelum menjalankan bagian ketiga c,c,'
Jika bagian ketiga menjadi 'd
, literal d
didorong ke atas tumpukan utama dan tidak ada lagi yang dilakukan. Bagian atas tumpukan utama sekarang d
akan menjadi output.
Jika bagian ketiga menjadi dd
, dua elemen muncul dari tumpukan utama dan sekarang bagian atas tumpukan adalah '
dan keluaran.
Karenanya kita dapat mendeteksi radiasi di bagian ketiga. Untuk alasan yang sama kita dapat mendeteksi radiasi di bagian kedua.