Todos aqueles castores ocupados fizeram uma bagunça. Eles escreveram por toda a fita. Nesse ritmo, nosso vizinho deixará de nos emprestar fitas ilimitadas.
Precisamos de uma nova maneira de jogar o movimentado jogo de castores, que não estrague todas as fitas que usamos.
As regras
Apenas Brainfuck. A fita de memória é ilimitada nos dois sentidos. A instrução de entrada sempre lerá , para que possa ser usada para limpar um valor.
Limite de origem de 50 bytes.
No final da execução, a memória deve ter todos os s.
A pontuação é a distância entre a localização inicial e a localização final do ponteiro de memória - se forem necessárias instruções para mover entre elas, sua pontuação será . Mais alto é melhor. Forneça um valor exato, se puder, caso contrário, forneça uma estimativa.
Exemplo
32 bytes,
-[-[[>]+>+[<]>-[[>]<+<+[<]>-]]>]
Explicação
- Initialize the list to [255].
[ ] Repeat as long as the list is not empty.
[- ] Decrement the left end. We need to shrink the numbers so it ends eventually.
[ [ ] ] Skip if 0 already.
[ [[>] ] ] Move to the cell past the right end.
[ [ + ] ] Make this cell 1.
[ [ > ] ] Go right again.
[ [ + ] ] Make this cell 1. We've now appended [1, 1].
[ [ [<]> ] ] Go back to the first nonzero cell on the left.
[ [ - ] ] And decrement it.
[ [ [ ]] ] We will need to transfer the rest of the number from the left to the right, so keep looping.
[ [ [[>]< ]] ] Go to the last nonzero cell on the right.
[ [ [ +<+ ]] ] Increment this and the one on the left. These are the cells we appended earlier. We transfer to them.
[ [ [ [<]> ]] ] Go back to the first nonzero cell on the left, which we are transferring from.
[ [ [ -]] ] Decrement here on the left to balance out the incrementing on the right.
[ >] We end the iteration on a now empty cell. Move right, the new left end is there.
Começamos com a lista . A cada iteração, consumimos o valor à esquerda da lista e, se , anexamos à direita. Os números anexados são mais baixos que o original ; portanto, eles ficarão menores até chegarem a , quando são consumidos sem expansão. Assim, o processo termina, eventualmente, com todos s na memória. No entanto, em cada etapa, o número de cópias do número duplica. A pontuação deste programa foi inicializada com a listan n > 1 [ n - 1 , n - 1 ] ( n - 1 ) ( n ) 1 0 [ n ] é .
Este exemplo pretende mostrar algumas das técnicas usadas na criação de um envio. Não é competitivo por seu tamanho.
Respostas:
[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]
1 - m, m, 1 <n times>
m
Eu usei o seguinte programa Python para modelar o comportamento do programa:
fonte
>
.