Задача по программированию С++

Выполнен
Заказ
6671992
Раздел
Программирование
Тип работы
Антиплагиат
Не указан
Срок сдачи
27 Апр в 23:55
Цена
2 500 ₽
Блокировка
10 дней
Размещен
15 Апр в 14:09
Просмотров
67
Описание работы

Интерпретатор Машин Тьюринга

В нашем случае рассматривается модификация МТ, заданая следующим образом:

  1. лента, замкнутая в кольцо (фиксированное количество ячеек);
  2. алфавит {0, 1};
  3. множество состояний Q;
  4. программа (набор правил) вида q_i a_j -> q_k a_m d_n, где
  • q_i — состояние, в котором находится машина (слово длиной не более 15 символов),
  • a_j — символ, записанный в обозреваемой ячейке,
  • q_k — состояние, в которое переходит машина (слово длиной не более 15 символов),
  • a_m записывается в ячейку вместо a_j,
  • d_n — движение головки, которое имеет три варианта: на ячейку влево (L), на ячейку вправо (R), остаться на месте (N);
  1. начальное состояние — первое состояние, записанное в программе.

Состояние, для которого не определено правило, является заключительным. Попав в него, машина останавливается.

Программа МТ записана в файле, имя которого передается в программу в командной строке первым аргументом. Файл содержит строки в формате q_i a_j -> q_k a_m d_n, например, файл MT.txt

q1 0 -> q2 1 R

q1 1 -> q2 1 L

q2 0 -> q1 1 L

q2 1 -> q3 1 L

 

Если какая-то строка программы содержит ошибку, то вывести сообщение Error.

Вторым аргументом командной строки задается размер ленты, а третьим — максимальное количество тактов работы машины. Например, вызов tm MT.txt 1000 1000000 должен запустить программу записанную в файле MT.txt на пустой ленте длиной 1000 ячеек, замкнутой в кольцо и выполнить не более 1000000тактов работы машины. В результате работы должны получить:

6

1111

 

Если в ходе работы МТ не остановилась за максимально разрешенное количество тактов работы, то остановить машину и вывести сообщение Not applicable. В остальных случаях вывести в первой строке количество тактов до остановки, а во второй строке содержимое ленты, начиная с позиции, на которой остановилась МТ, и до последней 1 на ленте. Если в результате работы на ленте не было ни одной 1, то вывести 0.

Требования к реализации
  • Название класса: TuringMachine
  • Заголовочный файл: turingmachine.h
  • Файл реализации: turingmachine.cpp

Для класса TuringMachine реализовать:

  • конструктор для задания машины (аргументы: размер ленты, программа);
  • конструктор копирования;
  • оператор присваивания;
  • метод unsigned long long calc(std::string & tape, unsigned long long maxsteps), выполняющий программу, на ленте tape с заданным исходным состоянием, максимальным количеством тактов работы машины, заданным в maxsteps, и возращающий количество выполненных шагов (если ответ более maxsteps, то машина не остановилась за заданное количество шагов).

Требования:

  • Пользоваться сторонними библиотеками при выполнении задания запрещено (исключение std::string для передачи агрумента метода calc и возвращения результата работы этого метода).
Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.54
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Время выполнения заказа:
7 дней 2 минуты
Выполнен в срок
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир