Ваша задача состоит в том, чтобы получить информацию, подобную этой (программа Hello World):
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
И выведите подсказку (которая будет "> "):
>
Затем пользователь может ввести что угодно в подсказку. Ваш простой отладчик должен иметь следующие команды:
S- шаг- Выведите текущее местоположение (см.
L) После перехода. S(a positive integer)- шаг за шагом
- Выведите текущее местоположение (см.
L- место расположения- Термин «местоположение» всегда относится к тому, где вы находитесь в программе (т. Е. Указатель инструкции).
Отформатирован так:
v +++++++[>+++++++<-]>.Это означает, что текущее местоположение программы находится на третьем
+.
G(an integer)- перейти к- Это означает, что продолжайте идти, пока не доберетесь до этого места. Если вы достигли конца программы и не попали туда, просто выйдите из программы.
- Отрицательное целое число означает, что много символов с конца. Да, это означает , что
-0отличается0, и-1является вторым по последнему символу. - Не выводите ничего для этой команды.
D- массив дампа- Отформатированный как
1, 2, 3, 4, 5 - Если массив есть
1, 2, 3, 0, 0, 0, 0, 0, ..., только вывод1, 2, 3. D(a positive integer) (a positive integer)- сбросить все элементы массива между этими двумя позициями (включительно)
- Отформатированный как
(a positive integer)- вывести элемент в данный момент в этой позиции массиваP- вывести индекс указателя BF (то, что вы меняете с помощью>и<).
Когда программа запросит ввод, покажите подсказку "I> ". (Вы можете вводить один символ за раз.)
Когда он что-то выводит, покажи "O> " + (the output). Несколько выходов между командами должны быть связаны друг с другом (то есть вы не можете сделать это > G-0 O> H O> e O> l O> l O> o ..., это должно быть > G-0 O> Hello, World!).
Выведите «Done» и выйдите, как только вы дойдете до конца программы.
Образец прогона:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
> 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
Пробный прогон с пошаговым циклом и Pинструкцией (вычисляет 3*2+1)
+++[>++<-]>+
> S3
3
> L
v
+++[>++<-]>+
> S3
6
> L
v
+++[>++<-]>+
> P
1
> S3
9
> L
v
+++[>++<-]>+
> S
3
> L
v
+++[>++<-]>+
> D
2, 2
>
Пробный прогон, показывающий ввод / вывод
>+[>,---------------------------------]<[<]>[>.]
> G37
I> H
I> e
I> l
I> l
I> o
I> !
> D
0, 39, 68, 75, 75, 78
> G-0
O> 'DKKN
Done
Это код-гольф , поэтому выиграет самый короткий код.