Traceless Busy Beaver


20

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.0

Limite de origem de 50 bytes.

No final da execução, a memória deve ter todos os s.0

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.nn

Exemplo

32 bytes,22551

-[-[[>]+>+[<]>-[[>]<+<+[<]>-]]>]

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 ][255]nn>1[n-1,n-1](n-1)(n)10 0[n] é .2n-1

Este exemplo pretende mostrar algumas das técnicas usadas na criação de um envio. Não é competitivo por seu tamanho.


3
@ Ok, não há problema - isso não foi uma crítica. Se não há outra maneira para marcar este que permite que o comprimento de código arbitrário, agora é a hora de encontrá-lo antes de respostas vêm em que vou retag isso como atualmente o tag de golfe código é enganosa.
Trichoplax

3
Tem que haver algum limite, pois mais bytes permitem definir uma função de crescimento mais rápido. Não há nenhuma razão em particular para 50, ela parece alta o suficiente para um crescimento decente (definitivamente melhor do que o exponencial do meu exemplo) e soluções criativas, mas ainda muito pequena para o worm de Beklemishev ou outro crescimento extremamente rápido. // Obrigado por corrigir minhas tags, a propósito, corri um pouco para fazer isso.
EPICI 9/09/18

2
Apenas como pano de fundo: tentamos evitar pontuações mínimas para o código de golfe , mas esse desafio não é o código de golfe e o número de bytes não é a pontuação; portanto, não vejo nenhum problema em haver um limite de 50 bytes neste caso.
Trichoplax

1
Info: Acho que posso "portar" trivialmente essa resposta de outro desafio e obter uma pontuação semelhante.
user202729

1
@EPICI Meu castor ocupado anterior estava sem rastreamento, e é por isso que eu estava tentando adaptá-lo.
Jo rei

Respostas:


10

UMA(255,2)-1=(22535)-4

+<+<<++>-[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]>[->]

UMA[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]UMA(m,n)1 - m, m, 1 <n times>mUMA(m,n)

Eu usei o seguinte programa Python para modelar o comportamento do programa:

def a(M, N):
    assert M > 0
    m = [-M + 1, M]
    n = N
    while m[-1]:
        while m[-1] > 1:
            m[-1] -= 1
            m[-2] += 1
            while n:
                m.insert(-1, 1)
                n -= 1
            n = 1
        n += 2
        m.pop()
    return n

1
Você pode aumentar sua pontuação adicionando um final >.
Jonathan Frech

uau, muito impressionante
alan2here 17/11/18
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.