Bu zorluk Meta Quine miyim benzer ?
Bir quine, STDOUT'ta kendini üreten bir programdır. Bu zorluk, çalıştırıldığında STDOUT'ta bir program B üreten bir A programı üretmektir. Program B çalıştırıldığında STDOUT'ta A programı üretir. A ve B programları aynı dilde yazılmalı (ve çalıştırılmalıdır). Bağlantılı soru A! = B'yi kısıtladı. Bu çok kolay görünüyordu. Bu soru için, aşağıdaki kurallar kullanılarak A ve B'nin antika olduğu konusunda ısrar ediyoruz:
- A ve B programları aynı karakterlerden hiçbirini kullanamaz, boşluk ve ifade ayırıcıları ve noktalama işaretleri için kaydedemez.
- A ve B programlarının her biri, ne boşluk ne de ifade ayırıcısı ya da noktalama işareti olmayan en az bir karakter içermelidir.
- Kural 1 ve 2'nin amacı için, "boşluk" terimi, kendisi bir yorumlayıcı, operatör veya (ayırıcının aksine) yorumlanan herhangi bir sembol veya sembol dizisini hariç tutar. Bu nedenle Boşluk dilinde, boşluk yoktur.
- Bir ifade ayırıcı, deyimleri ayırmak için geleneksel olarak dil içinde kullanılan sözdizimsel bir öğedir. Bu, python'daki yeni satırı veya Java, perl veya C'deki noktalı virgül içerir.
- Noktalama işareti, boşluk veya POSIX sözcük karakteri sınıfında olmayan bir ASCII karakteridir (yani, bir alt çizgi bu amaç için noktalama işareti değildir) - yani
ispunct()
true değerini döndürür ve olmaz_
. - Program A çalıştırıldığında STDOUT üzerinde bir program (Program B) üretmelidir, bu program çalıştırıldığında Program A üretir.
- A ve B programları aynı programlama dilinde olmalıdır.
- Kullanılan programlama dili aslında bir programlama dili olmalıdır. Aksi takdirde iyi bir dava açmazsanız, Turing'in tamamlanması gerektiğini öneririm.
- A ve B'den en az biri, dil içinde en az bir ifade yürütmelidir.
Bu kod golf, bu yüzden en kısa cevap kazanır, skor A programının bayt cinsinden uzunluğudur (yani B programının uzunluğu ilgili değildir).
A
ve a
kabul edilir?