Найти - Пользователи
Полная версия: Запуск эмулятора МТ
Начало » Python для новичков » Запуск эмулятора МТ
1
magnom
Вопрос следующего содержания. С 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
leventov
Пихаешь два куска в один файл.ру, заодно пишешь input = <чему он у тебя должен быть равен>, в конце дописываешь print(execute_MT(MT, input)), с командной строки python файл.ру
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB