Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 12. Информатика. ЕГЭ. Поляков-8292
- Просмотры: 783
- Изменено: 27 сентября 2025
(К. Багдасарян) На ленте исполнителя МТ в соседних ячейках записана последовательность из \(800\) единиц и \(900\) нулей, расположенных в произвольном порядке, и одной двойки в конце. Ячейки справа и слева от последовательности заполнены пустыми символами «\(\lambda\)». В начальный момент времени головка находится в ближайшей ячейке слева от последовательности.
Программа работы исполнителя:
| \(\lambda\) | \(0\) | \(1\) | \(2\) | |
| \(q_0\) | \(\lambda , \, R, \, q_1\) | \(1, \, R, \, q_1\) | \(0, \, R, \, q_1\) | \(1, \, S, \, q_0\) |
| \(q_1\) | \(\lambda , \, S, \, q_1\) | \(1, \, R, \, q_0\) | \(0, \, R, \, q_0\) | \(0, \, S, \, q_1\) |
Команды движения каретки: \(L\) – влево, \(R\) – вправо, \(N\) — нет перемещения, \(S\) – стоп. Определите количество единиц в строке, полученной в результате работы программы.
Решение:
Python
from random import shuffle
mt = {'l': {'q0': 'l,R,q1', 'q1': 'l,S,q1'},
'0': {'q0': '1,R,q1', 'q1': '1,R,q0'},
'1': {'q0': '0,R,q1', 'q1': '0,R,q0'},
'2': {'q0': '1,S,q0', 'q1': '0,S,q1'}}
step = {'R': 1, 'L': -1, 'S': 0, 'N': 0}
state = 'q0'
tmp = list('1' * 800 + '0' * 900)
shuffle(tmp)
s = ['l'] + tmp + ['2', 'l']
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(s.count("1"))
Ответ: \(900\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


