... almeno per qualche definizione di "auto-modifica".
L'obiettivo
In questa sfida, il vostro compito è quello di scrivere tre corde A, Be Cche soddisfano le seguenti proprietà.
La stringa
Bha una lunghezza di almeno 1.Per ogni
n ≥ 0, la stringa è un programma valido (che significa programma eseguibile completo o definizione di funzione) nel linguaggio di programmazione che preferisci. L'apice denota ripetizione, quindi questo significa corde , , , ecc Ogni programma richiede una stringa come input, e restituisce una stringa come output.ABnCACABCABBCABBBCPer qualsiasi
m, n ≥ 0, se il programma viene eseguito con input , ritorna . Per input non in questo modulo, il programma può fare qualsiasi cosa, incluso l'arresto anomalo.ABmCABnCABm*n+1C
Alcuni esempi nel formato 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
Regole e punteggio
Il tuo punteggio è la lunghezza totale diAC , e il punteggio più basso è migliore. Si noti che mentre Bnon viene conteggiato ai fini del punteggio, deve essere prodotto da Ae Ccome nel primo esempio.
Le scappatoie standard non sono ammesse. Ai programmi non è consentito accedere direttamente o indirettamente al proprio codice sorgente (tranne quando gli viene dato come input). Ti viene richiesto di identificare le stringhe e A, in qualche modo, la tua risposta e incoraggiato a spiegare la tua soluzione.BC