... au moins pour une définition de "auto-modification".
La tâche
Dans ce défi, votre tâche est d'écrire trois chaînes A
, B
et C
qui satisfont les propriétés suivantes.
La chaîne
B
a une longueur d'au moins 1.Pour chaque
n ≥ 0
chaîne, la chaîne est un programme valide (c'est-à-dire un programme exécutable complet ou une définition de fonction) dans le langage de programmation de votre choix. La répétition de la désigne superscript, donc ce moyen les cordes , , , etc. Chaque programme prend une chaîne en entrée, et retourne une chaîne en sortie.ABnC
AC
ABC
ABBC
ABBBC
Pour tout
m, n ≥ 0
, si le programme est exécuté avec une entrée , il retourne . Pour les entrées qui ne sont pas de cette forme, le programme peut faire n'importe quoi, y compris un plantage.ABmC
ABnC
ABm*n+1C
Quelques exemples dans le format 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
Règles et notation
Votre score est la longueur totale de A
etC
, le score le plus bas étant meilleur. Notez que bien que B
ne soit pas compté dans la partition, il doit être produit par A
et C
comme dans le premier exemple.
Les failles standard sont interdites. Les programmes ne sont pas autorisés à accéder directement ou indirectement à leur propre code source (sauf quand ils le reçoivent en entrée). Vous devez identifier les chaînes A
, B
et C
dans votre réponse d'une manière ou d'une autre, et les encourager à expliquer votre solution.