Sua tarefa é criar um programa em que, se algum caractere for excluído, ele detectará qual caractere foi excluído e, em seguida, reinsira o caractere excluído em seu próprio arquivo de origem.
Por exemplo, se o seu programa é RadiationHardened
e é modificado para RadiaionHardened
, então ele deve produzir que o quinto byte (indexado 0) foi modificado e a fonte do programa deve estar RadiationHardened
imediatamente após a execução.
Notas e regras
- Você pode assumir que exatamente um caractere foi excluído no código-fonte antes da execução. O comportamento do programa não modificado é indefinido.
- Você pode assumir que o byte alterado será excluído, não transposto, inserido ou substituído.
- No caso de uma execução de múltiplos do mesmo caractere, você pode relatar o primeiro ou o último índice da execução, mas seja consistente com o que usa. Por exemplo,
baaad
a exclusão debaad
pode reportar 1 ou 3 (zero indexado), mas deve ser a mesma durante todo o programa. - Você não precisa gravar a fonte inteira em seu próprio arquivo. Você só precisa reinserir o byte excluído.
- Ao contrário das regras típicas para quines reforçados com radiação, detectar o byte alterado da leitura do código-fonte do próprio programa é um jogo justo.
- Você pode gerar o índice de bytes alterado através de qualquer formato razoável. Seja consistente sobre se é 0 ou 1 ou qualquer outra notação. Você pode até gerar um número dentro de uma string de modelo.
Isso é código-golfe, então o programa mais curto vence.
Boa sorte!
EDIT1: requisito alterado de substituição para exclusão
EDIT2: regra adicionada para execuções de duplicatas
*
comando mata todos os IPs. O cardeal também não pode fazê-lo, por causa de@
.code-challenge
local em que cada programa pode declarar uma lista de bytes protegidos contra radiação (mas não mais do que, digamos, 50% do tamanho total). Um sistema simples de pontuação pode contar cada byte protegido por radiação como 10 bytes, ou algo assim.Respostas:
Befunge-98 (FBBI) ,
344296248bytesExperimente online!
Verificação!
O Befunge-98 é a primeira linguagem esotérica que eu descobri que era 2D e tinha saída de arquivo. Esta é uma solução completa (com uma nova linha à direita) armazenada em um arquivo nomeado como caractere de tabulação. Ele gera como indexado 0 e gera o primeiro índice em uma sequência de caracteres (embora haja apenas pares).
Existem alguns campos de golfe a serem feitos,
especialmente porque existem 15 no-ops no código, agora apenas um no-op! Vou trabalhar para tornar isso mais curto, com o objetivo de chegar a 200 bytes ou menos.fonte
Unefunge-98 (PyFunge) , 118 bytes
Experimente online!
Verificação!
Enquanto jogava minha resposta no Befunge-98, percebi que poderia economizar alguns bytes transferindo-o para o Unefunge, já que eu precisaria apenas me preocupar com a dimensão única e não com as duas. Isso também abriu muitos atalhos e campos de golfe possíveis, o que tornou a nova solução muito menor.
Explicação (desduplicada):
fonte