... en azından bazı "kendini değiştirme" tanımı için.
Görev
Bu meydan okuma olarak, görev üç dizeleri yazmaktır A
, B
ve C
o aşağıdaki özellikleri karşılamaktadır.
Dize
B
uzunluğ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.ABnC
AC
ABC
ABBC
ABBBC
Herhangi biri
m, n ≥ 0
için program girişle çalışıyorsa , döndürür . Bu formda olmayan girdiler için, program çökme dahil her şeyi yapabilir.ABmC
ABnC
ABm*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 A
veC
düşük puanın daha iyi olması. İse bu Not B
puanı doğru sayılmaz, bu üretilebilir olmalıdır A
ve C
birinci ö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
, B
ve C
bir şekilde Yanıtınızda ve çözümünüzü açıklamaya teşvik etti.