Bu 128 dilde quine ouroboros (başka bir dilde bir program çıkaran, başka bir dilde bir program çıkaran bir program (orijinal program çıkaran 125 dilde)) oldukça etkileyici. Ancak ne yazık ki, statik bir yineleme sayısı var.
Bir programın çıktısını veren (başka bir dilde olması gerekmez, ancak olabilir), bir programın çıktısını veren, bir programın çıktısını veren, vb. Yinelemelerin ardından orijinal programı ilk kez veren (yani ara program olmayan) bir program yazın program orijinaliyle aynı olmalıdır, çünkü aksi takdirde girdisini yok sayan bir quin işe yarayacaktır), burada n girdi olarak sağlanan negatif olmayan bir tamsayıdır. Giriş, yalnızca orijinal kaynak kodundaki bir sayı olamaz (örneğin x = <the value of n>
, programınızın başına koymak ), aşağıdakilerden biri olmalıdır:
- Komut satırı argümanı olarak iletildi
- Standart girişten okuma
- Yeni programı döndüren / çıkaran bir işleve bağımsız değişken olarak iletilir.
Ouroboros'taki ara aşamalar için, programınız tam olarak çalışan bir program veya çağrıldığında bir sonrakini döndürecek / çıktısını alacak argüman içermeyen bir işlev olabilir.
Kaynak dosyadan kendisi okuyamayabilir veya herhangi bir kine benzeri yapı kullanabilirsiniz (bunu yapacak herhangi bir şey olduğunu düşünmüyorum, ama olabilir)
Açık olmak gerekirse n = 0
, program kendi kaynak kodunu çıkarmalıdır.
Eğer n = 1
, program orijinal kaynak kodunu veren farklı bir program çıkarmalıdır.
Ve bunun gibi...
Birkaç bayt kazanır!
Düzenle:
Yazmış olmalıyım "Ouroboros'taki ara aşamalar için, programınız ya girişi olmayan tam işlevli bir program ya da argümanları olmayan bir işlev olabilir". Programınız zincirindeki bir sonraki çıktılıyorsa, o zaman sorun olmaz, ancak program n orijinal değerini gereksinim duyulmayacak, giriş için bekler.
getInput()
herhangi bir girdi olmadan benzer bir şey kullanılması durumunda bunu ele almamız gerekir . Ya da, hataları önlemek için daha sonraki yinelemeler için kullanılmayan rastgele bir şey girebilir miyiz getInput()
? Aka mevcut Python cevabı geçerli mi?
n
, ouroboros n
yinelemelerinin "başlangıç programı" olan bir program çıktı olduğundan ve cevabımızın n
tekrarlardan biri olarak sayılmaması gerektiğinden şüpheleniyorum. Bu doğru mu?