Bu, makine öğrenmesini göstermek için kendini değiştiren bir quine veya quine gibi çalışan bir program tasarlamanız gereken bir kod-golf mücadelesidir.
Arka fon
Burada tarif edilen 'pangolin oyunu' adı verilen temel bir yapay zeka programı var . Temel fikir şudur: Program ilk kez çalıştırıldığında şunu sorar:
Tamam, lütfen bir şey düşün
Bir pangolin mi?
Daha sonra her ikisine de cevap verebilirsiniz:
Evet
Bu durumda diyor ki:
İyi. Bu çok kolaydı.
Ya da değilse:
Ah. O zaman sen kazandın - Ne düşünüyordun?
Söyleyeceğiniz şey:
bir köpek
Söyleyeceği şey
Lütfen bana bir köpek hakkında bir soru verin, böylece bir köpekle pangolin arasındaki farkı anlatabilirim
cevap verebilirsin
Karıncaları yer mi?
Sonra soracaktı:
Bir köpeğin cevabı nedir?
Söyleyeceğin şey
yok hayır
Ve söylerdi
Teşekkürler
Bir dahaki sefere çalıştığında, yukarıdaki soruyu soracak ve bu gibi sorulardan oluşan bir ikili ağacı oluşturacaktı.
Meydan okuma
Arka plan yeterli. Bu zorluk kendi kendini değiştiren bir pangolin programı yazmaktır. Kurallar aşağıdaki gibidir:
Program çıktısı (yukarıda açıklandığı gibi) olmalıdır
STDERR
. Nihai yanıt her zaman "İyi. Bu çok kolaydı." Olacaktır. veya "Teşekkürler". Bundan sonra, programın geçerli sürümünü veya soruyu içeren programın yeni bir sürümünü çıkarmalıdırSTDOUT
. YazmayıSTDOUT
veSTDERR
okumayı desteklemeyen bir dilde yazılmış hiçbir cevapSTDIN
geçerli olmayacaktır.Başka bir deyişle UNIX’in altındaki programı şu şekilde çağırabilirsiniz:
örnek:
$ mylanguage myprogram > myprogram.1
[dialog goes here]
$ mylanguage myprogram1 > myprogram.2
[dialog goes here]
- Program tam olarak belirtilen istemleri kullanmak zorundadır (çünkü istemleri kısaltmak beceri gerektirmez). Bilgi istemleri (tırnak işaretleri olmadan ve% s'nin yerine kullanıldığı yerde) aşağıdaki gibidir:
liste:
"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"
Evet / hayır cevabı bekliyor zaman, programın kabul etmeli
y
ya dayes
'evet' için her durumda, ven
yano
'hayır' için her durumda. Uygun olmayan girişlerle yaptığınız işlem size bağlıdır. Örneğin , 'evet' ile başlayany
veyaY
hayır olarak başlayan herhangi bir cevabı almaya karar verebilirsiniz .Verilen şeylerin adlarının ve soruların yalnızca ASCII harfleri, sayıları, boşlukları, kısa çizgileri, soru işaretlerini, virgülleri, tam durakları, iki noktalı virgülleri ve noktalı virgülleri içerdiğini, yani regex'i takip ettiklerini varsayabilirsiniz
^[-?,.;: a-zA-Z]+$
. Bundan daha fazlasıyla başa çıkabiliyorsanız (özellikle seçtiğiniz dilde alıntı karakterleri), kendini beğenmiş gibi görünüyorsun ama fazladan puan kazanmıyorsun.Herhangi bir dosyayı okumak veya yazamayabilir Programınız (hariç
STDIN
,STDOUT
veSTDERR
ya ağdan,); özellikle diskten kendi kodunu okuyabilir veya yazamaz. Durumu program kodunun kendisine kaydedilmelidir.Program çalıştırmak ve düzgün yanıtı tahmin edildiğinde, gereken , bir Quine'ın tam olarak gerçekleştirmek o kadar yazmalıdır yani
STDOUT
tam olarak kendi kod değişmeden.Program çalıştırın ve hatalı yanıtı tahmin edildiğinde, gereken onu kendi kodu içinde sağlanan yeni bir soru-cevap kodlamak ve yazmak
STDOUT
kendi özgün tahmin ve sağlanan yeni nesne arasındaki ayrım yapabilen bu yüzden de, kendi kodunda önceden verilen tüm nesneler arasında ayrım yapmaya ek olarak.Yazılımın birden fazla sıralı çalışmasıyla başa çıkabilmeniz gerekir, böylece birçok nesneyi öğrenir. Çoklu çalışma örnekleri için buraya bakınız .
Test çalışmaları kafadaki bağlantıda verilmiştir (açıkçası sadece
STDIN
veSTDERR
diyaloğu kapsar).Standart boşluklar hariçtir.