Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практика_6(16)

.doc
Скачиваний:
4
Добавлен:
27.11.2019
Размер:
78.34 Кб
Скачать

Лабораторная работа № 5

Написать программы решения приведённых ниже задач для машины Тьюринга. Вид машины Тьюринга (её внешний и внутренний алфавиты) разработать самостоятельно. Выполнить полученные программы на интерпретаторе машины Тьюринга.

Задачи (всего 11 баллов):

  1. (0,8 балла) Поиск в указанной фразе указанного символа (останов машины происходит при обнаружении первого вхождения).

  2. (0,8 балла) Дан алфавит A = {a, b, c}. Удвоить первую букву входного слова.

  3. (0,8 балла) Дан алфавит A = {a, b, c}. Переставить первую букву  входного слова в его конец.

  4. (0,8 балла) Дан алфавит A = {a, b, c}. Написать 0, если входное слово чётной длины, иначе написать 1.

  5. (0,8 балла) Определить, делится ли число в десятичной системе исчисления на 5 без остатка. Если делится, то записать справа от числа слово “да”, иначе — “нет”.

  6. (1 балл) Замена в приведённом слове (фразе) всех букв «у» на «о».

  7. (1,5 балла) Осуществить запись приведённого десятичного числа в единичной непозиционной системе счисления.

  8. (2 балла) Дана десятичная запись натурального числа n > 1. Разработайте машину Тьюринга, которая уменьшала бы заданное число n на 1. При этом запись числа n — 1 не должна содержать левый нуль, например, 100 — 1 = 99, а не 099. Начальное положение головки — правое.

  9. (2,5 балла) Сложение двух десятичных чисел.

Задачи по вариантам (2.5 б)

Вар.

Задание

  1. 1

На информационной ленте машины Тьюринга содержится массив символов +.

Необходимо разработать функциональную схему машины Тьюринга, которая каждый второй символ + заменит на —. Каретка в начальном состоянии находится где-то над указанным массивом.

  1. 1

Дан массив из открывающихся и закрывающихся скобок. Постройте машину Тьюринга, которая удаляла бы пары взаимных скобок. Например, дано: «)(()(()» ,

надо получить: «)...(( . ».

  1. 1

Дана конечная последовательность меток (например, «*»), записанных в клетки ленты подряд, без пропусков. Необходимо разработать машину Тьюринга, которая будет записывать в десятичной системе счисления число этих меток.

  1. 1

На ленте машины Тьюринга находится число, записанное в десятичной системе счисления. Умножьте это число на 2, если каретка находится над крайней левой цифрой числа.

  1. 1

На информационной ленте машины Тьюринга находится десятичное число. Найдите результат целочисленного деления этого числа на 2.

  1. 1

Число n задано на ленте машины Тьюринга массивом меток. Преобразуйте это

значение n по формуле:

Каретка обозревает крайнюю левую метку.

  1. 1

Число n задано на ленте машины Тьюринга массивом меток. Преобразуйте это значение n по формуле:

Каретка обозревает крайнюю левую метку.

  1. 1

На ленте машины Тьюринга находится массив 2N меток. Уменьшите этот массив в 2 раза.

Дана строка из букв a и b. Разработайте машину Тьюринга, которая переместит все буквы a в левую, а буквы b в правую часть строки. Каретка находится над крайним левым символом строки.

Дано число n в восьмеричной системе счисления. Разработайте машину Тьюринга, которая увеличивала бы заданное число n на 1.

Дано число n в двоичной системе счисления. Разработайте машину Тьюринга, которая увеличивала бы заданное число n на 1.

Дано число n в пятеричной системе счисления. Разработайте машину Тьюринга, которая увеличивала бы заданное число n на 1.

Даны два целых положительных числа в десятичной системе счисления. Сконструируйте машину Тьюринга, которая будет находить разность этих чисел, если известно, что первое число больше второго, а между ними стоит знак «минус». Каретка находится над левой крайней цифрой левого числа.

Дана конечная последовательность меток (например, «*»), записанных в клетки ленты подряд, без пропусков. Необходимо разработать машину Тьюринга, которая будет записывать в десятичной системе счисления число этих меток.

На информационной ленте машины Тьюринга находится массив, состоящий только из символов А и В. Сожмите массив, удалив из него все элементы В.

Задачи по вариантам (3 б)

Вар.

Задание

Даны два целых положительных числа в различных системах счисления, одно —в троичной системе, другое — в десятичной. Разработайте машину Тьюринга, которая будет находить сумму этих чисел в десятичной системе счисления.

На информационной ленте машины Тьюринга в трех секциях в произвольном порядке записаны три цифры: 1, 2, 3. Каретка обозревает крайнюю левую цифру. Необходимо составить функциональную схему машины Тьюринга, которая расположит эти цифры в порядке возрастания.

Найдите произведение двух натуральных чисел m и n, заданных в унарной системе счисления. Соответствующие наборы символов «|» разделены знаком «*», а справа от последнего символа правого члена стоит знак « = ». Поместите результат умножения этих чисел вслед за знаком « = ».

Даны два натуральных числа m и n, представленные в унарной системе счисления. Между этими числами стоит знак «?». Выясните отношение m и n, т.е. знак « ? » замените на один из подходящих знаков « > », «<»,« = ».

На ленте машины Тьюринга записано число в десятичной системе счисления. Каретка находится над крайней правой цифрой. Запишите цифры этого числа в обратном порядке.

На ленте машины Тьюринга находится слово, состоящее из букв латинского алфавита {а, b, с, d}. Подсчитайте число букв «а» в данном слове и полученное значение запишите на ленту левее исходного слова через пробел. Каретка обозревает крайнюю левую букву.

На ленте машины Тьюринга находится целое положительное число, записанное в десятичной системе счисления. Найдите произведение этого числа на число 11. Каретка обозревает крайнюю правую цифру числа.

Даны два натуральных числа m и n, заданных в унарной системе счисления. Числа m и n представлены наборами символов « | » , разделенных « \ ». В конце набора стоит «=». Разработайте машину Тьюринга, которая будет производить деление нацело двух натуральных чисел m и n, и находить остаток от деления. При этом результат должен быть записан следующим образом: после «=» должен находиться набор символов « | » частного (он может быть и пустым), после чего ставится знак «(», за которым следует набор символов « | » остатка от деления m и n.

Даны два натуральных числа m и n, представленных в унарной системе счисления. Соответствующие наборы символов « | » разделены « — », вслед за последним символом набора n стоит знак «=». Разработайте машину Тьюринга, которая будет находить разность чисел m и n. При этом результат должен быть записан следующим образом: если m>n, то справа от «=» должны стоять знак «+» и набор символов « | » в количестве m — n, если m= n, то справа от знака «=» должна стоять пустая клетка; если m <n, то справа от «=» должны стоять знак «—» и набор символов « | » в количестве m — n.

Сконструируйте машину Тьюринга, которая выступит в качестве двоично-восьмеричного дешифратора.

Сконструируйте машину Тьюринга, которая выступит в качестве двоично-шестнадцатиричного дешифратора.

Даны два целых положительных числа в различных системах счисления, одно —в двоичной системе, другое — в десятичной. Разработайте машину Тьюринга, которая будет находить сумму этих чисел в десятичной системе счисления.

Даны два целых положительных числа в различных системах счисления, одно —в унарной системе, другое — в десятичной. Разработайте машину Тьюринга, которая будет находить сумму этих чисел в десятичной системе счисления.

Распределение вариантов

ФИО

Задача 1

Задача 2

ФИО

Задача 1

Задача 2

  1. Батракова Алёна

2

13

  1. Щеголихин Даниил

13

1

  1. Глупышева Любовь

4

11

15

5

  1. Дроздова Марина

6

9

11

6

  1. Емельянова Екатерина

8

7

9

9

  1. Кочегарова Тамара (староста)

10

5

9

8

  1. Морозова Александра

12

1

7

12

  1. Николаев Алексей

14

3

5

10

  1. Патарушин Кирилл

15

2

3

5

  1. Пластинин Никита

13

6

1

6

  1. Свинцова Алёна

11

4

2

8