Сегодня домашка, принимают до утра пятницы.

Многолеточная машина, лент сколько необходимо ≥ 2. Задача творческая, тривиальные задачки не надо. Задачи примерно того уровня, что мы делаем на практике. Задачу придумать самому

# https://turingmachinesimulator.com/  
  
d = {  
    'П': [  
        ['@', '@', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_']  
    ],  
    'О': [  
        ['@', '@', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '@', '_']  
    ],  
    'С': [  
        ['_', '@', '@', '_'],  
        ['@', '_', '_', '_'],  
        ['@', '_', '_', '_'],  
        ['@', '_', '_', '_'],  
        ['_', '@', '@', '_']  
    ],  
    'Т': [  
        ['@', '@', '@', '_'],  
        ['_', '@', '_', '_'],  
        ['_', '@', '_', '_'],  
        ['_', '@', '_', '_'],  
        ['_', '@', '_', '_']  
    ],  
    'А': [  
        ['_', '@', '_', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '@', '_'],  
        ['@', '_', '@', '_']  
    ],  
    'В': [  
        ['@', '@', '_', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '_', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '_', '_']  
    ],  
    'Ь': [  
        ['@', '_', '_', '_'],  
        ['@', '_', '_', '_'],  
        ['@', '@', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '@', '_']  
    ],  
    ' ': [  
        ['_', '_', '_', ],  
        ['_', '_', '_', ],  
        ['_', '_', '_', ],  
        ['_', '_', '_', ],  
        ['_', '_', '_', ]  
    ],  
    'З': [  
        ['@', '@', '@', '_'],  
        ['_', '_', '@', '_'],  
        ['_', '@', '_', '_'],  
        ['_', '_', '@', '_'],  
        ['@', '@', '@', '_']  
    ],  
    'Ч': [  
        ['@', '_', '@', '_'],  
        ['@', '_', '@', '_'],  
        ['@', '@', '@', '_'],  
        ['_', '_', '@', '_'],  
        ['_', '_', '@', '_']  
    ],  
    'Е': [  
        ['@', '@', '@', '_'],  
        ['@', '_', '_', '_'],  
        ['@', '@', '@', '_'],  
        ['@', '_', '_', '_'],  
        ['@', '@', '@', '_']  
    ],  
    '>': [  
        ['_', '_', '@', '_', '_', '_'],  
        ['_', '_', '@', '@', '_', '_'],  
        ['@', '@', '@', '@', '@', '_'],  
        ['_', '_', '@', '@', '_', '_'],  
        ['_', '_', '@', '_', '_', '_']  
    ],  
    '<': [  
        ['_', '_', '@', '_', '_', '_'],  
        ['_', '@', '@', '_', '_', '_'],  
        ['@', '@', '@', '@', '@', '_'],  
        ['_', '@', '@', '_', '_', '_'],  
        ['_', '_', '@', '_', '_', '_']  
    ],  
    '!': [  
        ['@', '_'],  
        ['@', '_'],  
        ['@', '_'],  
        ['_', '_'],  
        ['@', '_']  
    ]  
}  
  
  
def concat_arrays(arr1, arr2):  
    result = []  
    for row1, row2 in zip(arr1, arr2):  
        result.append(row1 + row2)  
    return result  
  
  
name = 'the running line'  
  
text = '>ПОСТАВЬТЕ ЗАЧЕТ!<'  
  
pic = d[text[0]]  
for i in range(1, len(text)):  
    pic = concat_arrays(pic, d[text[i]])  
  
TAPES = len(pic)  
STATES = len(pic[0])  
  
program = f"""  
name: {name}  
init: q0  
accept: q_final  
  
"""  
  
for i in range(STATES):  
    column = [pic[v][i] for v in range(TAPES)]  
    program += f"""  
q{i}{',_' * TAPES}  
q{i + 1},{','.join(map(str, column))}{',>' * TAPES}  
  
"""  
  
program += f"""  
q{STATES}{',_' * TAPES}  
q0{',_' * TAPES}{',-' * TAPES}  
"""  
  
with open('program.txt', 'w') as f:  
    f.write(program)