На ленте в соседних ячейках записано двоичное представление числа \(145~682\) без ведущих нулей. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей слева от последовательности ячейке.
Программа работы исполнителя:
| \(\lambda\) | \(0\) | \(1\) | |
| \(q_0\) | \(1 , \, R, \, q_1\) | ||
| \(q_1\) | \(0 , \, R, \, q_2\) | \(0, \, R, \, q_1\) | \(1, \, R, \, q_1\) |
| \(q_2\) | \(0 , \, R, \, q_3\) | ||
| \(q_3\) | \(1 , \, S, \, q_3\) |
Определите результат работы программы. В ответе запишите получившееся на ленте число в десятичной системе счисления.
Решение:
Python
alg = {('q0', 'l'): '1,R,q1', ('q1', 'l'): '0,R,q2', ('q1', '0'): '0,R,q1',
('q1', '1'): '1,R,q1', ('q2', 'l'): '0,R,q3', ('q3', 'l'): '1,S,q3'}
s = ['l'] + list(bin(145_682)[2:]) + ['l'] * 10
mov = {'R': 1, 'L': -1, 'S': 0}
p, state, act = 0, 'q0', 'R'
while act != 'S':
s[p], act, state = alg[(state, s[p])].split(',')
p += mov[act]
n = ''.join([x for x in s if x != 'l'])
print(int(n, 2))
Ответ: \(3262609\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене