Продолжайте работу в том же проекте 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. Сделайте так, чтобы все тесты в этом файле проходили.
// Вставьте сюда финальное содержимое файла BrainfuckBasicCommands.cs
using System;
using System.Collections.Generic;
using System.Linq;
namespace func.brainfuck
{
Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂

