... almeno per qualche definizione di "auto-modifica".
L'obiettivo
In questa sfida, il vostro compito è quello di scrivere tre corde A
, B
e C
che soddisfano le seguenti proprietà.
La stringa
B
ha 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.ABnC
AC
ABC
ABBC
ABBBC
Per 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.ABmC
ABnC
ABm*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 diA
C
, e il punteggio più basso è migliore. Si noti che mentre B
non viene conteggiato ai fini del punteggio, deve essere prodotto da A
e C
come 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.B
C