... 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, Bet Cqui satisfont les propriétés suivantes.
La chaîne
Ba une longueur d'au moins 1.Pour chaque
n ≥ 0chaî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.ABnCACABCABBCABBBCPour 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.ABmCABnCABm*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 AetC , le score le plus bas étant meilleur. Notez que bien que Bne soit pas compté dans la partition, il doit être produit par Aet Ccomme 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, Bet Cdans votre réponse d'une manière ou d'une autre, et les encourager à expliquer votre solution.