Сегодня домашка, принимают до утра пятницы.
Многолеточная машина, лент сколько необходимо ≥ 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)