... en azından bazı "kendini değiştirme" tanımı için.
Görev
Bu meydan okuma olarak, görev üç dizeleri yazmaktır A, Bve Co aşağıdaki özellikleri karşılamaktadır.
Dize
Buzunluğu en az 1'dir.Her biri için
n ≥ 0, dize seçtiğiniz programlama dilinizde geçerli bir programdır (tam çalıştırılabilir program veya işlev tanımı anlamına gelir). Üstindis O anlamına gelir tekrarlama, bu yollarla böylece dizeleri , , , vb Her program girdi olarak bir dize alır ve döner çıktı olarak tek bir dize.ABnCACABCABBCABBBCHerhangi biri
m, n ≥ 0için program girişle çalışıyorsa , döndürür . Bu formda olmayan girdiler için, program çökme dahil her şeyi yapabilir.ABmCABnCABm*n+1C
Formattaki bazı örnekler program(input) -> output:
AC(AC) -> ABC
ABC(AC) -> ABC
ABBBBBC(AC) -> ABC
AC(ABC) -> ABC
AC(ABBBBC) -> ABC
ABC(ABC) -> ABBC
ABBC(ABC) -> ABBBC
ABBBBC(ABBBC) -> ABBBBBBBBBBBBBC
ABBBC(ABBBBBBC) -> ABBBBBBBBBBBBBBBBBBBC
Kurallar ve Puanlama
Puanınız toplam uzunluğu AveC düşük puanın daha iyi olması. İse bu Not Bpuanı doğru sayılmaz, bu üretilebilir olmalıdır Ave Cbirinci örnekte olduğu gibi.
Standart boşluklara izin verilmez. Programların doğrudan veya dolaylı olarak kendi kaynak kodlarına erişmelerine izin verilmez (girdi olarak verilmediklerinde hariç). Sen dizeleri tanımlamak için gerekli olan A, Bve Cbir şekilde Yanıtınızda ve çözümünüzü açıklamaya teşvik etti.