Задание 2 ОГЭ по информатике: шифр из символов и цифр
Подтемы
- Шифр, состоящий из символов26 задач
- Шифр, состоящий из цифр18 задач
Что проверяет задание
Задание 2 проверяет умение работать с таблицей соответствия «буква — код» и восстанавливать по ней исходное сообщение. Код может состоять из специальных символов (@, ~, +, #, ^ и т.п.) или из цифр — принцип решения одинаковый: нужно понять устройство соответствия и правильно «нарезать» зашифрованную строку на части, каждая из которых равна одному коду из таблицы.
Проверяются три навыка:
- умение читать и применять таблицу кодирования;
- умение работать с кодами разной длины (одна буква кодируется одним символом, другая — двумя);
- логика — использование дополнительного условия задачи (например, «буквы в сообщении не повторяются») для снятия неоднозначности при разбиении строки.
Как выглядит формулировка и сколько баллов
Типичная формулировка: «Дан фрагмент кодовой таблицы: буквы и соответствующие им коды. Известно, что буквы в закодированном слове не повторяются. Расшифруйте сообщение». Иногда встречается обратная задача — закодировать слово по таблице.
В таблице сверху обычно идёт строка букв, под ней (или сразу за ней без разделителей) — строка кодов. Коды состоят из одного и того же небольшого набора символов (обычно 2–3 знака) или цифр, а их длина может отличаться от буквы к букве.
Задание относится к базовому уровню, оценивается в 1 первичный балл, ответ — слово (без пробелов, обычно заглавными буквами), калькулятор не требуется.
Что нужно знать
- Таблица кодирования — взаимно однозначное соответствие между буквами алфавита и кодовыми словами (кодами). Каждой букве соответствует ровно один код, разным буквам — разные коды.
- Код переменной длины (префиксный код) — способ кодирования, при котором длины кодов различны, но никакой код не является началом (префиксом) другого. Это гарантирует однозначность разбора строки слева направо.
- Если алфавит кода состоит из различных символов, то количество различных кодов длины равно . Например, при и получаем возможных двухсимвольных кодов.
- Для префиксного кода из слов с длинами над алфавитом из символов должно выполняться неравенство Крафта:
- Полезный практический приём: если известна общая длина строки кодов и число букв , то из можно определить, сколько кодов какой длины использовано (например, при и получаем один код длины 1 и пять кодов длины 2, так как ).
- Числовой шифр работает по тем же правилам: коды — это цифры или группы цифр, а условие «нет повторов» также помогает разбить длинную цифровую строку на отдельные коды.
Методы решения
1. Коды одинаковой длины. Если все коды в таблице состоят из одинакового числа символов (например, все по 2 знака), достаточно разбить зашифрованную строку на группы такой же длины и заменить каждую группу буквой по таблице. Мини-пример: таблица А=01, Б=10, В=11; строка 011011 → 01|10|11 → АБВ.
2. Коды переменной длины (метод перебора по таблице). Если длины кодов разные, читаем строку слева направо и на каждом шаге проверяем, совпадает ли следующий 1 символ, 2 символа и т.д. с каким-либо кодом из таблицы. Если код найден и является единственно возможным (не является префиксом другого кода), фиксируем букву и двигаемся дальше. Мини-пример: А=0, Б=10, В=11; строка 010 → «0»=А, «10»=Б → АБ.
3. Разрешение неоднозначности через условие «буквы не повторяются». Если на каком-то шаге код можно прочитать двумя способами, а один из вариантов приводит к повтору буквы (что запрещено условием), выбираем второй вариант. Мини-пример: если код Х короче кода Y, но Y начинается так же, как X, — если по варианту с X буква X уже встретилась раньше, выбираем разбор через Y.
4. Работа с цифровым шифром. Принцип тот же, но код — цифра или число. Нужно определить, кодируются ли буквы одной цифрой или парами цифр, посчитав общее количество цифр в строке кодов и число букв в таблице. Мини-пример: А=1, Б=23, В=4; строка 1234 → 1|23|4 → АБВ.
5. Обратная задача — кодирование. Если нужно зашифровать слово по таблице, просто заменяем каждую букву соответствующим кодом и записываем коды подряд без пробелов, в том порядке, в котором идут буквы слова.
Алгоритм решения по шагам
- Определите алфавит кода: сколько разных символов (или цифр) встречается в строке кодов.
- Посчитайте число букв в таблице и общую длину строки кодов . Найдите распределение длин кодов из равенства (обычно это один короткий код и остальные — на 1 символ длиннее).
- Восстановите таблицу «буква → код», сопоставляя буквы по порядку с кусками строки кодов нужной длины. Проверьте, что все коды получились разными (биекция).
- Возьмите зашифрованное сообщение и начните читать его слева направо, на каждом шаге пробуя короткие коды первыми.
- Если разбор неоднозначен — используйте условие «буквы не повторяются»: отбрасывайте вариант, который даёт уже использованную букву.
- Соберите буквы в слово, проверьте, что получилось осмысленное русское слово.
- Запишите ответ заглавными буквами без пробелов и знаков.
Разбор примеров
Пример 1. Таблица: буквы К, Л, М, П, О, И; коды над алфавитом из символов @, +, ~:
| Буква | К | Л | М | П | О | И |
|---|---|---|---|---|---|---|
| Код | @@ | ~ | @+ | @~ | +@ | +~ |
Здесь 6 букв, суммарная длина кодов , то есть один код (у буквы Л) состоит из одного символа, остальные — из двух. Ни один код длины 2 не начинается с «~», поэтому расшифровка однозначна.
Зашифрованная строка: +@~+~@+@~. Разбираем слева направо:
+@→ О;~→ Л;+~→ И;@+→ М;@~→ П.
Получаем ОЛИМП.
Пример 2. Буквы Н, М, Л, И, Т, О; алфавит символов *, @, ~:
| Буква | Н | М | Л | И | Т | О |
|---|---|---|---|---|---|---|
| Код | @~ | @* | *@ | ~ | *~ | @@ |
Сумма длин: — короткий код у буквы И.
Зашифрованная строка: *@~@*@@@~. Разбор:
*@→ Л;~→ И;@*→ М;@@→ О;@~→ Н.
Получаем ЛИМОН.
Пример 3. Буквы Ж, Е, С, А, К, Л; алфавит символов +, #, ^:
| Буква | Ж | Е | С | А | К | Л |
|---|---|---|---|---|---|---|
| Код | ++ | ^ | #+ | +^ | #^ | +# |
Сумма длин: , короткий код у буквы Е.
Зашифрованная строка: +#^#+#^+^. Разбор:
+#→ Л;^→ Е;#+→ С;#^→ К;+^→ А.
Получаем ЛЕСКА.
Во всех трёх примерах алгоритм одинаковый: сначала находим, у какой буквы код короче остальных (через сумму длин), восстанавливаем таблицу, затем читаем зашифрованную строку слева направо, каждый раз пробуя короткий код и только потом длинные.
Типичные ошибки и ловушки
- Считать, что все коды одинаковой длины, не проверив это через сопоставление общей длины строки кодов и числа букв — приводит к сдвигу и полной путанице в расшифровке.
- Путать похожие символы (например, ~ и +, или @ и &) при переносе таблицы и сообщения — из-за этого код читается неверно уже с первого шага.
- Забывать про биекцию: если в восстановленной таблице у двух разных букв получился одинаковый код — где-то ошибка в разбиении, нужно пересчитать длины.
- Игнорировать условие «буквы не повторяются», хотя оно часто единственный способ выбрать между двумя формально возможными разборами строки.
- Ошибка в подсчёте символов при разбиении длинной строки — сбивается всё разбиение начиная с этого места; лучше подписывать номера позиций карандашом.
- Неправильный регистр или пробелы в ответе — ответ обычно нужно записать одним словом заглавными буквами без пробелов и знаков препинания.
- Не проверять итоговое слово по смыслу — если получилась бессмысленная последовательность букв, значит, где-то допущена ошибка в разборе.
Как готовиться
- Решите подряд 10–15 задач этого типа из открытого банка заданий — символьные и цифровые варианты вперемешку, чтобы не привыкать к одному формату.
- Тренируйтесь быстро считать общую длину строки кодов и число букв, чтобы сразу понимать, сколько кодов какой длины использовано — это экономит время на экзамене.
- Отдельно потренируйтесь на примерах, где условие «буквы не повторяются» действительно нужно для разбора — это самая частая ловушка.
- После расшифровки всегда проверяйте, что получилось настоящее русское слово; если нет — ищите ошибку в разбиении строки, а не пытайтесь "подогнать" смысл.
- Порешайте и обратные задачи (закодировать слово по таблице) — они помогают лучше понять структуру соответствия и требуют меньше времени, но часто встречаются в вариантах.
- Работайте без калькулятора и таймера в конце подготовки, чтобы привыкнуть к формату реального экзамена — задание должно занимать не больше 2–3 минут.
Частые вопросы
Как понять, что коды в таблице разной длины?
Посчитайте общее число символов в строке кодов и число букв в таблице. Если частное не целое или сумма не делится равными частями, значит длины разные — обычно один код короче остальных на 1 символ.
Что делать, если строку можно разбить двумя разными способами?
Используйте условие задачи «буквы не повторяются»: отбрасывайте тот вариант разбора, при котором одна и та же буква встречается в сообщении два раза.
Отличается ли решение для цифрового шифра от символьного?
Нет, принцип тот же: определяете алфавит кодов (цифры вместо символов), считаете длины и разбираете строку слева направо, находя соответствие по таблице.
Нужно ли писать ответ заглавными буквами?
Да, ответ обычно записывается одним словом заглавными русскими буквами без пробелов и знаков препинания, если в условии не указано иначе.
Как проверить, что расшифровка верна?
Убедитесь, что получившееся слово существует и осмысленно, а также что все использованные коды в таблице действительно разные и совпадают по длине с посчитанным ранее распределением.
Можно ли встретить в задании код длиной больше двух символов?
Да, но в подавляющем большинстве заданий ОГЭ длины кодов ограничены 1–2 символами; принцип разбора при этом не меняется — просто добавляется проверка более длинных вариантов.
Сколько времени стоит тратить на это задание на экзамене?
Обычно 2–3 минуты достаточно, если заранее потренироваться считать длины кодов и быстро сверяться с таблицей.