Решения задачи с Ulearn

Практика «Простые команды Brainfuck»

Продолжайте работу в том же проекте brainfuck.

Изучите класс Brainfuck.cs, в частности то, как он использует реализованный ранее класс VirtualMachine.

В классе BrainfuckBasicCommands реализуйте метод, регистрирующий следующие простые команды в виртуальную машину:

Символ Значение
. Вывести байт памяти, на который указывает указатель, преобразовав в символ согласно ASCII
+ Увеличить байт памяти, на который указывает указатель
Уменьшить байт памяти, на который указывает указатель
, Ввести символ и сохранить его ASCII-код в байт памяти, на который указывает указатель
> Сдвинуть указатель памяти вправо на 1 байт
< Сдвинуть указатель памяти влево на 1 байт
A-Z, a-z, 0-9 сохранить ASCII-код этого символа в байт памяти, на который указывает указатель

Например, программа ++>+++.<. выводит два символа с ASCII кодами 2 и 3, а память после выполнения команды будет выглядеть так [2, 3, 0, 0, … 0].

Для ввода и вывода используйте переданные в метод Run функции Func<int> read и Action<char> write.

Тут read по аналогии с Console.Read возвращает либо код введенного символа, либо -1, если ввод закончился. Считайте, что на вход будут подаваться только символы с кодами 0..255 — они точно помещаются в один байт.

Детали реализации инструкций восстановите по тестам в классе BrainfuckBasicCommandsTests. Сделайте так, чтобы все тесты в этом файле проходили.

 

Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂

Обновлено: 02.10.2018 — 21:52

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.