La tua sfida è prendere input in questo modo (un programma Hello World):
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
E genera un prompt (che sarà "> "
):
>
L'utente può quindi inserire qualsiasi cosa al prompt. Il tuo debugger semplice deve avere questi comandi:
S
- passo- Emette la posizione corrente (vedi
L
) dopo il passo. S(a positive integer)
- passo che molti spazi
- Emette la posizione corrente (vedi
L
- Posizione- Il termine "posizione" si riferisce sempre al punto in cui ci si trova nel programma (ovvero al puntatore dell'istruzione).
Formattato in questo modo:
v +++++++[>+++++++<-]>.
Ciò significa che la posizione corrente del programma è al terzo
+
.
G(an integer)
- vai a- Ciò significa che continua a fare un passo fino a raggiungere quella posizione. Se raggiungi la fine del programma e non ci sei arrivato, esci semplicemente dal programma.
- Un numero intero negativo indica che molti caratteri dalla fine. Sì, questo significa che
-0
è diverso da0
, ed-1
è il penultimo personaggio. - Non emettere nulla per questo comando.
D
- dump array- Formattato come
1, 2, 3, 4, 5
- Se l'array è
1, 2, 3, 0, 0, 0, 0, 0, ...
, solo output1, 2, 3
. D(a positive integer) (a positive integer)
- scarica tutti gli elementi dell'array tra quelle due posizioni (incluso)
- Formattato come
(a positive integer)
- produce l'elemento attualmente in quella posizione dell'arrayP
- genera l'indice del puntatore BF (la cosa che cambi con>
e<
).
Quando il programma richiede input, mostra il prompt "I> "
. (È possibile inserire un carattere alla volta.)
Quando emette qualcosa, mostra "O> " + (the output)
. Più output tra comandi devono essere concatenati (cioè non puoi farlo > G-0 O> H O> e O> l O> l O> o ...
, deve esserlo > G-0 O> Hello, World!
).
Emetti "Fine" ed esci una volta raggiunta la fine del programma.
Esecuzione di esempio:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
> S
1
> S
2
> S2
4
> S0
4
> L
v
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
> D
4
> 0
4
> D10 15
0, 0, 0, 0, 0, 0
> G-0
O> Hello, World!
Done
Esecuzione di esempio che mostra il passaggio attraverso i loop e l' P
istruzione (calcola 3*2+1
)
+++[>++<-]>+
> S3
3
> L
v
+++[>++<-]>+
> S3
6
> L
v
+++[>++<-]>+
> P
1
> S3
9
> L
v
+++[>++<-]>+
> S
3
> L
v
+++[>++<-]>+
> D
2, 2
>
Esempio di esecuzione che mostra I / O
>+[>,---------------------------------]<[<]>[>.]
> G37
I> H
I> e
I> l
I> l
I> o
I> !
> D
0, 39, 68, 75, 75, 78
> G-0
O> 'DKKN
Done
Questo è code-golf , quindi vincerà il codice più corto.