(В. Шубинкин) На ленте исполнителя МТ в соседних ячейках записана последовательность из \(500\) пар символов \(0\) и \(1:\) \(0101 \ldots 01.\) Ячейки справа и слева от последовательности заполнены пустыми символами «\(\lambda\)». В начальный момент времени головка расположена в самой левой ячейке последовательности (в ячейке с самым левым символом \(0).\)
Программа работы исполнителя:
| \(\lambda\) | \(0\) | \(1\) | |
| \(q_0\) | \(1 , \, R, \, q_1\) | \(0 , \, R, \, q_1\) | \(0 , \, R, \, q_1\) |
| \(q_1\) | \(2 , \, R, \, q_2\) | \(1, \, R, \, q_2\) | \(1, \, R, \, q_2\) |
| \(q_2\) | \(3 , \, S, \, q_0\) | \(3, \, R, \, q_0\) | \(3, \, R, \, q_0\) |
Команды движения каретки: \(L\) – влево, \(R\) – вправо, \(N\) — нет перемещения, \(S\) – стоп. Определите сумму чисел во всех заполненных ячейках после выполнения программы.
Решение:
Так как начальная строка известно, задание можно решить программно
Python
mt = {'l': {'q0': '1,R,q1', 'q1': '2,R,q2', 'q2': '3,S,q0'},
'0': {'q0': '0,R,q1', 'q1': '1,R,q2', 'q2': '3,R,q0'},
'1': {'q0': '0,R,q1', 'q1': '1,R,q2', 'q2': '3,R,q0'}}
step = {'R': 1, 'S': 0}
state = 'q0'
s = list('01' * 500) + ['l'] * 10
p = 0
s[p], m, state = mt[s[p]][state].split(',')
while m != 'S':
p += step[m]
s[p], m, state = mt[s[p]][state].split(',')
print(sum(int(x) for x in s if x != 'l'))
Ответ: \(1337\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене