Практика_6(16)
.docЛабораторная работа № 5
Написать программы решения приведённых ниже задач для машины Тьюринга. Вид машины Тьюринга (её внешний и внутренний алфавиты) разработать самостоятельно. Выполнить полученные программы на интерпретаторе машины Тьюринга.
Задачи (всего 11 баллов):
(0,8 балла) Поиск в указанной фразе указанного символа (останов машины происходит при обнаружении первого вхождения).
(0,8 балла) Дан алфавит A = {a, b, c}. Удвоить первую букву входного слова.
(0,8 балла) Дан алфавит A = {a, b, c}. Переставить первую букву входного слова в его конец.
(0,8 балла) Дан алфавит A = {a, b, c}. Написать 0, если входное слово чётной длины, иначе написать 1.
(0,8 балла) Определить, делится ли число в десятичной системе исчисления на 5 без остатка. Если делится, то записать справа от числа слово “да”, иначе — “нет”.
(1 балл) Замена в приведённом слове (фразе) всех букв «у» на «о».
(1,5 балла) Осуществить запись приведённого десятичного числа в единичной непозиционной системе счисления.
(2 балла) Дана десятичная запись натурального числа n > 1. Разработайте машину Тьюринга, которая уменьшала бы заданное число n на 1. При этом запись числа n — 1 не должна содержать левый нуль, например, 100 — 1 = 99, а не 099. Начальное положение головки — правое.
(2,5 балла) Сложение двух десятичных чисел.
Задачи по вариантам (2.5 б)
Вар. |
Задание |
|
На информационной ленте машины Тьюринга содержится массив символов +. Необходимо разработать функциональную схему машины Тьюринга, которая каждый второй символ + заменит на —. Каретка в начальном состоянии находится где-то над указанным массивом. |
|
Дан массив из открывающихся и закрывающихся скобок. Постройте машину Тьюринга, которая удаляла бы пары взаимных скобок. Например, дано: «)(()(()» , надо получить: «)...(( . ». |
|
Дана конечная последовательность меток (например, «*»), записанных в клетки ленты подряд, без пропусков. Необходимо разработать машину Тьюринга, которая будет записывать в десятичной системе счисления число этих меток. |
|
На ленте машины Тьюринга находится число, записанное в десятичной системе счисления. Умножьте это число на 2, если каретка находится над крайней левой цифрой числа. |
|
На информационной ленте машины Тьюринга находится десятичное число. Найдите результат целочисленного деления этого числа на 2. |
|
Число n задано на ленте машины Тьюринга массивом меток. Преобразуйте это значение n по формуле:
Каретка обозревает крайнюю левую метку. |
|
Число n задано на ленте машины Тьюринга массивом меток. Преобразуйте это значение n по формуле:
Каретка обозревает крайнюю левую метку. |
|
На ленте машины Тьюринга находится массив 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 |
|
2 |
13 |
|
|
13 |
1 |
|
4 |
11 |
|
|
15 |
5 |
|
6 |
9 |
|
|
11 |
6 |
|
8 |
7 |
|
|
9 |
9 |
|
10 |
5 |
|
|
9 |
8 |
|
12 |
1 |
|
|
7 |
12 |
|
14 |
3 |
|
|
5 |
10 |
|
15 |
2 |
|
|
3 |
5 |
|
13 |
6 |
|
|
1 |
6 |
|
11 |
4 |
|
|
2 |
8 |