Ini adalah tantangan kode-golf di mana Anda perlu menyusun program yang bertindak seperti quine atau quine yang memodifikasi dirinya sendiri untuk menggambarkan pembelajaran mesin.
Latar Belakang
Ada program kecerdasan buatan dasar yang disebut 'permainan trenggiling' yang dijelaskan di sini . Ide dasarnya adalah program saat dijalankan pertama kali bertanya:
OKE, tolong pikirkan sesuatu
Apakah itu trenggiling?
Anda kemudian dapat menjawab:
iya nih
Dalam hal ini dikatakan:
Baik. Itu sangat mudah.
Atau jika tidak tertulis:
Oh Nah Anda menang kemudian - Apa yang Anda pikirkan?
Yang bisa Anda katakan:
anjing
Yang dikatakannya
Tolong beri saya pertanyaan tentang seekor anjing, jadi saya bisa membedakan antara anjing dan trenggiling
Anda mungkin membalas
Apakah itu memakan semut?
Kemudian akan bertanya:
Apa jawaban untuk seekor anjing?
Yang akan Anda katakan
tidak
Dan itu akan berkata
Terima kasih
Lain kali itu berjalan, itu akan mengajukan pertanyaan di atas, dan akan membangun pohon biner dari pertanyaan seperti itu.
Tantangan
Cukup latar belakangnya. Tantangan ini adalah menulis program trenggiling yang memodifikasi sendiri. Aturannya adalah sebagai berikut:
Output program (seperti dijelaskan di atas) seharusnya
STDERR
. Respons terakhir akan selalu "Bagus. Itu sangat mudah." atau "Terima kasih". Setelah ini, harus menampilkan versi program saat ini, atau versi baru dari program yang memasukkan pertanyaanSTDOUT
. Tidak ada jawaban yang ditulis dalam bahasa yang tidak mendukung penulisanSTDOUT
danSTDERR
atau pembacaan dari yangSTDIN
valid.Dengan kata lain di bawah UNIX Anda dapat menjalankan program seperti ini:
contoh:
$ mylanguage myprogram > myprogram.1
[dialog goes here]
$ mylanguage myprogram1 > myprogram.2
[dialog goes here]
- Program harus menggunakan persis prompt yang ditentukan (karena memendekkan prompt tidak menunjukkan keahlian). Prompt adalah (tanpa tanda kutip, dan di mana% s diganti) sebagai berikut:
daftar:
"OK, please think of something"
"Is it %s?"
"Good. That was soooo easy."
"Oh. Well you win then -- What were you thinking of?"
"Please give me a question about %s, so I can tell the difference between %s and %s"
"What is the answer for %s?"
"Thanks"
Ketika mengharapkan jawaban ya / tidak, program Anda harus menerima
y
atauyes
dalam hal apa pun untuk 'ya', dann
atauno
dalam hal apa pun untuk 'tidak'. Apa yang Anda lakukan dengan input yang tidak sesuai adalah terserah Anda. Sebagai contoh, Anda mungkin memutuskan untuk mengambil jawaban yang dimulai dengany
atauY
sebagai 'ya', dan apa pun yang tidak.Anda dapat mengasumsikan bahwa nama-nama barang yang disediakan dan pertanyaan hanya terdiri dari huruf ASCII, angka, spasi, tanda hubung, tanda tanya, koma, titik penuh, titik dua, dan titik koma, yaitu cocok dengan regex berikut
^[-?,.;: a-zA-Z]+$
. Jika Anda dapat mengatasi lebih dari itu (terutama karakter kutipan dalam bahasa yang Anda pilih), Anda akan menjadi sombong, tetapi tidak mendapatkan poin tambahan.Program Anda mungkin tidak membaca atau menulis file apapun (termasuk
STDIN
,STDOUT
, danSTDERR
), atau dari jaringan; khusus itu tidak dapat membaca atau menulis kode sendiri dari disk. Keadaannya harus disimpan dalam kode program itu sendiri.Ketika program dijalankan dan menebak jawabannya dengan benar, ia harus melakukan persis seperti quine, yaitu harus menulis
STDOUT
persis kode sendiri, tidak berubah.Ketika program dijalankan dan menebak jawaban salah, ia harus menyandikan pertanyaan dan jawaban baru yang disediakan dalam kode sendiri dan menuliskannya
STDOUT
dalam kode sendiri, sehingga mampu membedakan antara tebakan aslinya dan objek baru yang disediakan, dalam Selain membedakan antara semua objek yang diberikan sebelumnya.Anda harus dapat mengatasi beberapa kali menjalankan perangkat lunak sehingga dapat mempelajari banyak objek. Lihat di sini untuk contoh beberapa proses.
Uji coba diberikan di tautan di kepala (jelas hanya mencakup dialog
STDIN
danSTDERR
).Celah standar tidak termasuk.