Tantangan ini, jika Anda menerimanya, adalah menulis tiga fungsi atau program A, B, dan C:
- A adalah quine yang menampilkan semua A, B dan C (yang juga merupakan seluruh konten kode dalam kiriman Anda).
- B mengambil parameter F dan memeriksa apakah itu quine (menghasilkan FBC), atau melakukan sesuatu yang berbeda.
- C mengambil parameter G dan memeriksa apakah G mungkin bekerja seperti B (memeriksa apakah F menghasilkan FGC). Tidak mungkin untuk memutuskan apakah suatu fungsi adalah pemeriksa quine, jadi mari kita lakukan sesuatu yang lebih sederhana:
- Ini harus mengembalikan kebenaran jika G valid untuk B.
- Itu harus mengembalikan falsey jika G mengembalikan falsey untuk semua quines yang valid, atau G mengembalikan truey untuk semua non-quines yang valid.
- Itu dapat mengembalikan apa pun, crash atau tidak berakhir, dll, jika itu adalah salah satu dari kasus lain.
Perhatikan bahwa B mungkin. A dan F tidak memiliki input apa pun, jadi Anda bisa menjalankannya dan memeriksa hasilnya.
Aturan
- Harus ada cara untuk mengetahui bagian mana yang A, B dan C dari output A. Misalnya: masing-masing memiliki satu baris, atau mereka dikenali sebagai tiga fungsi dalam interpreter.
- Setiap fungsi harus dijalankan dengan hanya definisi itu sendiri, bukan kode lengkap Anda.
- Anda dapat menggunakan fungsi / program atau kode sumbernya, atau sepasang keduanya sebagai input B (atau G) dan C.
- Anda bisa mendefinisikan kembali truthy / falsey ke subset dari nilai-nilai itu. Anda juga dapat secara konsisten meminta F untuk mengembalikan beberapa jenis yang Anda pilih, seperti string tunggal.
- Anda dapat meminta A, B, F dan G, jika mereka dipanggil dengan parameter yang valid, secara konsisten tidak memiliki beberapa jenis input lain atau efek samping yang Anda pilih, seperti mengakses variabel global, atau membaca stdin, dll.
- Anda juga dapat mengasumsikan F dan G, jika mereka dipanggil dengan parameter yang valid, selalu berakhir.
- F harus bekerja dalam kondisi yang sama dengan A. Jadi tidak dapat bergantung pada B atau C atau keberadaan variabel lain, kecuali variabel itu didefinisikan pada bagiannya sendiri dalam outputnya.
- Tidak ada fungsi atau program yang dapat membaca kode sumbernya sendiri.
- Ini adalah kode-golf, kode terpendek (yang merupakan output dari A) dalam byte yang menang.
Jawaban:
CJam, 254 byte
Contoh jawaban, bukan golf.
3 fungsi tersebut adalah:
A dan F tidak mengambil parameter dan mengembalikan string. B, G dan C mengambil blok CJam sebagai parameter dan mengembalikan 1 untuk truey, atau 0 untuk falsey.
sumber