Sua tarefa é escrever um pedaço de código que zere a célula atual na variante Brainfuck que, cada célula pode conter um número inteiro assinado de magnitude arbitrariamente grande, em vez dos 0 a 255 normais.
Você pode assumir que existem l células à esquerda er células à direita da célula atual que são inicialmente zero. Seu programa pode acessar apenas essas células l + r +1. Depois que seu código termina, ele deve deixar as células extras l + r zero e o ponteiro para a célula atual na posição original.
Você não pode usar nenhuma entrada / saída.
O código com menor l + r vence. Se houver um empate, o código mais curto vence. É recomendável também indicar a complexidade do tempo do seu programa para referência, onde n é o valor absoluto do número inteiro original na célula atual.
Ferramentas úteis
Você pode testar um programa Brainfuck nessa variação usando este intérprete no TIO por mbomb007 .
Você também pode usar o intérprete nesta resposta por boothby (outras respostas do Python provavelmente também funcionam, mas eu não testei).
fonte
Respostas:
l + r = 0 + 2 = 2,
555351 bytesl + r = 1 + 2 = 3,
4644 bytesMeu próprio algoritmo. O ponteiro deve começar no número que precisa ser zerado. A complexidade do tempo é O (n ^ 2).
Como funciona:
n
.n+1
.n+1-2 = n-1
n-1+3 = n+2
.n+2-4 = n-2
.Repetimos o processo, aumentando o decréscimo a cada passo, até chegarmos a zero.
fonte
l + r = 0 + 2 = 2; 58 bytes
A complexidade é O (n ^ 2).
O seguinte é o meu gerador de programa de teste, para que você possa ver que eu realmente tentei testá-lo caso não funcionasse ...
fonte