Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2009 14:02:12

magnom
От:
Зарегистрирован: 2009-11-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск эмулятора МТ

Вопрос следующего содержания. С python не сталкивался практически а тут возникла некоторая необходимость.
По ссылке http://lib.custis.ru/index.php/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%A2%D1%8C%D1%8E%D1%80%D0%B8%D0%BD%D0%B3%D0%B0 нашел интерпретатор Машины Тьюринга и примеры к ней, которыми я хотел бы воспользоваться. Но не знаю как запустить:

def execute_MT(MT,input):
T=MT["program"]
tape=["*"]+input
state=MT["start"]
position=1
history=[{"state":state, "position":position, "tape": []+tape}]
step=0
while 1:
step=step+1
if position>=len(tape):
tape.append("*")
symbol_under_head=tape[position]
action=T[(state,(symbol_under_head))]
state=action[0]
symbol_to_write=action[1][0]
tape[position]=symbol_to_write
move=action[1][1]
if move=="L": position=position-1
if move=="R": position=position+1
history.append({"state":state, "position":position, "tape": []+tape})
if state==MT["stop"] or step>1000:
break
return history
и Пример
MT={
'k': 1,
'start': 's1',
'stop': 'q',
'program': {
#(Состояние, символы на лентах) -> (новое состояние, (действия по каждой ленте))
('s1', ('1')): ('s2', (('*','R'))),
('s2', ('1')): ('s2', (('1','R'))),
('s2', ('*')): ('s3', (('*','R'))),
('s3', ('*')): ('s4', (('1','L'))),
('s3', ('1')): ('s3', (('1','R'))),
('s4', ('1')): ('s4', (('1','L'))),
('s4', ('*')): ('s5', (('*','L'))),
('s5', ('1')): ('s5', (('1','L'))),
('s5', ('*')): ('s1', (('1','R'))),
('s1', ('*')): ('q', (('*','')))
}
}
Не могли бы вы подсказать как заставить это работать? Буду весьма благодарен.
Да, и если необходимо, использую Gentoo Linux, Python 2.6



Отредактировано (Ноя. 15, 2009 14:15:04)

Офлайн

#2 Ноя. 15, 2009 21:07:18

leventov
От:
Зарегистрирован: 2009-10-15
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск эмулятора МТ

Пихаешь два куска в один файл.ру, заодно пишешь input = <чему он у тебя должен быть равен>, в конце дописываешь print(execute_MT(MT, input)), с командной строки python файл.ру



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version