Este é um pouco à prova de golf -como COPS-e-ladrões desafio. Este é o tópico dos policiais; o fio dos ladrões está aqui.
Policiais
Sua tarefa é definir um sistema de reescrita abstrato no qual é difícil determinar a acessibilidade de uma palavra da outra. Você irá preparar o seguinte:
Um conjunto de símbolos, chamado alfabeto. (Você pode usar caracteres Unicode para isso, mas não use espaços em branco ou símbolos que sejam difíceis de distinguir entre si.)
Uma sequência de origem composta por símbolos do seu alfabeto.
Uma sequência de destino composta por símbolos do seu alfabeto.
Um conjunto de regras de reescrita usando caracteres do seu alfabeto. (Veja abaixo a definição de uma regra de reescrita.)
Uma prova que mostra se a string de origem pode ser convertida na string de destino pela aplicação sucessiva de suas regras de reescrita. Essa prova pode consistir em uma sequência real de etapas de reescrita, ou uma prova matemática de que essa sequência deve existir ou uma prova matemática de que essa sequência não existe.
Você postará os quatro primeiros, mantendo a prova em segredo; os ladrões tentarão decifrar sua resposta, fornecendo sua própria prova de que sua sequência de destino pode ou não ser alcançada a partir da sequência de origem. Se o seu envio não for quebrado dentro de duas semanas , você poderá marcá-lo como seguro e editar em sua prova.
Os envios serão pontuados de acordo com o número de caracteres em suas regras de reescrita e suas sequências de origem e destino, conforme detalhado abaixo. O vencedor será o envio sem rachaduras com a pontuação mais baixa.
O que é uma regra de reescrita?
Uma regra de reescrita é simplesmente um par de strings no seu alfabeto. (Qualquer uma dessas cadeias de caracteres pode estar vazia.) Um aplicativo de regra de reescrita consiste em localizar uma substring igual à primeira cadeia de caracteres do par e substituí-la pela segunda.
Um exemplo deve deixar isso claro:
Alfabeto Suponha que é A
, B
e C
; a cadeia de origem é " A
"; a cadeia de destino é " C
" e as regras de reescrita são
A:B
B:BB
B:A
AA:C
a sequência de destino é alcançável da seguinte maneira:
A
B (using rule 1)
BB (using rule 2)
AB (using rule 3)
AA (using rule 3)
C (using rule 4)
Pontuação
Sua pontuação será
- o comprimento da sua string de origem,
- mais o comprimento da sua sequência de destino,
- além do comprimento de todas as strings incluídas nas suas regras de reescrita,
- mais um ponto extra para cada regra de reescrita.
Se você escrever suas regras de reescrita com um separador de dois pontos, acima, esse será apenas o comprimento total de todas as regras de reescrita (incluindo o separador), além dos comprimentos das strings de origem e de destino. Uma pontuação mais baixa é melhor. O número de caracteres distintos em seu alfabeto será usado para romper laços, com menos sendo melhores.
Recompensa
Eu gostaria de ver respostas que realmente valem para pontuações baixas. Atribuirei 200 repetições à primeira resposta que marcar menos de 100 pontos neste desafio e não ficar rachada.
Mx -> Mxx
regra, para que acabasse muito mais complicado do que o de Hofstadter original.