Tugas
- Ambil satu karakter Unicode sebagai input.
- Keluarkan program dalam bahasa yang sama yang juga mematuhi spesifikasi ini, tetapi tidak mengandung karakter input.
- Jika program Anda dijalankan dengan masukan yang , dan kemudian program output kemudian jalankan dengan masukan b , maka program itu output yang diperbolehkan mengandung karakter seorang . Namun, b masih tidak diperbolehkan tampil di program ini. Dengan kata lain, hanya input ke inkarnasi terbaru dari program yang dilarang muncul.
- Apa pun judulnya, aturan standar quine berlaku.
Kemenangan program terpendek. Panjang program minimal harus satu byte.
Contoh
Jika programnya adalah ABCD. (# adalah komentar)
> slangi "ABCD"
A
EBCD # "FBCD" "JGGJ" "UGDKJGDJK" are all OK
> slangi "EBCD"
C
ABGD # "EBGD" "UIHDAIUTD" are all OK
> slangi "ABGD"
B
AFCD
> slangi "AFCD"
Z
ABCD
Di mana slangi
ada juru bahasa untuk bahasa fiktif.
code-golf
restricted-source
quine
Akangka
sumber
sumber
e
.e
, tetapi Gadsby melakukannya.Jawaban:
CJam,
45413835 byteJika karakter input bukan karakter
"$&)+,/:?HOX\_`el{}
, program ini mencetak versi dirinya yang sedikit dimodifikasi berikut ini. Cobalah online!Jika tidak, program akan mencetak versi modifikasi berikut yang dikaburkan. Cobalah online!
Perhatikan bahwa beberapa karakter tidak dapat dicetak. Cobalah online!
Bagaimana itu bekerja
Dalam program keluaran pertama yang mungkin, kami menghindari penggunaan
~
untuk dapat menggunakannya di program lain. Oleh karena itu, alih-alih_~
, program yang dimodifikasi berakhir denganOX$_?
, yang berfungsi sebagai berikut.Akhirnya, dalam program output yang tersisa,
membungkus semua karakter tersebut dalam sebuah array, oleh karena itu mendorong string berikut.
If-
kurangi 18 dari setiap kode karakter, dorong stringyang
~
dievaluasi.sumber
JavaScript (ES6),
356340327308303263Sekarang gunakan
Function`...```
untuk program kedua:Fungsi ini mengemas dirinya menjadi satu dari tiga program yang mungkin:
Program pertama memanggil
eval
string literal yang berisi kode fungsi dengan setiap karakter lolos sebagai nilai oktal.Program kedua mengarahkan browser ke
javascript:
URL yang berisi kode fungsi dengan setiap URL karakter disandikan. Ini adalah satu-satunya cara saya bisa berpikir untuk mengevaluasi kode tanpa menggunakan tanda kurung. Itu juga lolos dari huruf dalam 'eval'.Program terakhir sangat panjang. Itu membangun kode fungsi dengan menambahkan satu (
+9-8
) pada suatu waktu untuk mendapatkan setiap kode karakter. Ini untuk menghindari penggunaan digit oktal.Program yang benar diindeks dengan mencari string yang dibangun dengan hati-hati untuk karakter input:
Ini adalah versi yang belum teruji, belum teruji. Mungkin tidak berfungsi karena baris baru di sumber.
sumber
function f(){ ... };f()
bisa(f=_=>{ ... })()
. Berikut ini sebuah contoh: es6fiddle.net/iiz2nq0lf=(_=prompt())=>...;f()
. Input disimpan sebagai_
.Function`[code]`.call``;
pekerjaan untuk Anda, alih-alih mengarahkan? Berikut adalah contoh yang berfungsi: es6fiddle.net/ij023v49 (Lihat? Tidakevil()
! Erm, maksud sayaeval()
...)this
objek tersebut adalah string template kosong. Itu bergantung padaFunction
konstruktor, yang memungkinkan Anda untuk membuat fungsi, alih-alih berjalaneval()
. Fungsi akan memiliki kode yang terkandung dalam parameter pertama. Saya sering menggunakannya untuk mendapatkan yang asliwindow
, menggunakanFunction('return this')()
. Karena Anda tidak dapat menggunakan()
, saya telah menyalahgunakan sedikit kebaikan ES6 untuk mencoba meludahi fungsi yang dapat digunakan tanpa Anda jalankan()
. Untuk itu, Anda memerlukan.call()
metode, yang memanggil fungsi denganthis
objek baru .