Castoro Traceless occupato


20

Tutti quei castori indaffarati hanno fatto un bel casino. Hanno scritto su tutto il nastro. Di questo passo, il nostro vicino smetterà di prestarci nastri illimitati.

Abbiamo bisogno di un nuovo modo di giocare al frenetico gioco del castoro, che non rovini tutti i nastri che usiamo.

Le regole

Solo Brainfuck. Il nastro di memoria è illimitato in entrambi i modi. L'istruzione di input leggerà sempre , quindi può essere utilizzata per cancellare un valore.0

50 byte limite di origine.

Alla fine dell'esecuzione, la memoria deve essere di tutti s.0

Il punteggio è la distanza tra la posizione iniziale del puntatore della memoria e la posizione finale - se ci vogliono istruzioni per spostarsi tra loro, il tuo punteggio è n . Più alto è meglio. Se possibile, fornire un valore esatto, altrimenti fornire un preventivo.nn

Esempio

32 byte, 22551

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

Spiegazione

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

[255]nn>1[n1,n1](n1)(n)10[n]2n1

Questo esempio ha lo scopo di mostrare alcune delle tecniche utilizzate nella creazione di un invio. Non è competitivo per le sue dimensioni.


3
@Okx nessun problema - non era inteso come una critica. Se c'è un altro modo di segnare questo che consente una lunghezza arbitraria del codice, ora è il momento di trovarlo prima che arrivino le risposte. Sto per riassegnarlo poiché attualmente il tag golf del codice è fuorviante
trichoplax,

3
Ci deve essere un certo limite, poiché più byte consentono di definire una funzione in più rapida crescita. Non c'è motivo in particolare per il 50, sembra abbastanza alto per una crescita decente (decisamente migliore dell'esponenziale del mio esempio) e soluzioni creative ma ancora troppo piccolo per il worm Beklemishev o altra crescita estremamente veloce. // Grazie per aver corretto i miei tag, mi sono precipitato un po 'a tirarlo fuori.
EPICI,

2
Solo per lo sfondo: cerchiamo di evitare i punteggi minimi per il golf del codice , ma questa sfida non è il golf del codice, e il numero di byte non è il punteggio, quindi non vedo assolutamente alcun problema con un limite di 50 byte in questo caso.
trichoplax,

1
Info: Penso di poter "portare banalmente" questa risposta da altre sfide e ottenere un punteggio simile.
user202729

1
@EPICI Il mio precedente castoro indaffarato era già senza tracce, motivo per cui stavo cercando di adattarlo.
Jo King,

Risposte:


10

A(255,2)1=(22535)4

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

A[-[<+>>[-<[->+<]+>>]+<-]>[>]+[<]+<]A(m,n)1 - m, m, 1 <n times>mA(m,n)

Ho usato il seguente programma Python per modellare il comportamento del programma:

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
È possibile aumentare il punteggio aggiungendo un finale >.
Jonathan Frech,

wow, molto impressionante
alan2here il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.