... pelo menos para alguma definição de "auto-modificação".
A tarefa
Neste desafio, sua tarefa é escrever três cordas A
, B
e C
que satisfaçam as seguintes propriedades.
A cadeia
B
tem comprimento pelo menos 1.Para todos
n ≥ 0
, a string é um programa válido (ou seja, programa executável completo ou definição de função) na sua linguagem de programação preferida. A repetição denota sobrescritos, então isso significa que as cordas , , , etc. Cada programa tem uma string como entrada e retorna uma seqüência de caracteres como saída.ABnC
AC
ABC
ABBC
ABBBC
Para qualquer
m, n ≥ 0
, se o programa for executado com entrada , ele retornará . Para entradas não deste formulário, o programa pode fazer qualquer coisa, incluindo falha.ABmC
ABnC
ABm*n+1C
Alguns exemplos no 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
Regras e Pontuação
Sua pontuação é o comprimento total A
eC
, quanto menor a pontuação, melhor. Observe que, embora B
não seja contado para a pontuação, ela deve ser produzida por A
e C
como no primeiro exemplo.
As brechas padrão não são permitidas. Os programas não têm permissão para acessar direta ou indiretamente seu próprio código-fonte (exceto quando forem fornecidos como entrada). Você é obrigado a identificar as seqüências de caracteres e A
, de alguma forma, na sua resposta, e é incentivado a explicar sua solução.B
C