Вопрос:

В кодировке КОИ-8 каждый символ кодируется один байтом. Коля написал текст (в нём нет лишних пробелов): «Як, бык, коза, баран, корова, верблюд, шиншилла — домашние животные». Ученик вычеркнул из списка название одного из животных. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 40 бит меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название животного.

Ответ:

Решение:

Каждый символ в кодировке КОИ-8 занимает 1 байт, что равно 8 битам. Уменьшение размера текста на 40 бит означает, что было удалено 40 бит / 8 бит/символ = 5 символов.

Исходный текст: «Як, бык, коза, баран, корова, верблюд, шиншилла — домашние животные».

Слова в списке: Як, бык, коза, баран, корова, верблюд, шиншилла. Всего 7 животных.

После вычеркивания животного, лишних запятых и пробелов, размер уменьшился на 5 символов. Проанализируем, какие символы могли быть удалены.

Если удалить название животного, несколько запятых и пробелов, то общее число удаленных символов должно быть 5. Рассмотрим названия животных:

  • Шиншилла: 9 букв.
  • Верблюд: 7 букв.
  • Корова: 6 букв.
  • Баран: 5 букв.
  • Коза: 4 буквы.
  • Бык: 3 буквы.
  • Як: 2 буквы.

Если удалить «верблюд» (7 букв), то нужно удалить ещё -2 символа, что невозможно, так как остаются лишние запятые и пробелы.

Если удалить «шиншилла» (9 букв), нужно удалить -4 символа, что тоже невозможно.

Рассмотрим, какие именно символы могли быть удалены: название животного + запятые + пробелы.

Если удалить «верблюд» (7 символов), и, например, 3 запятые и 2 пробела, то всего 7 + 3 + 2 = 12 символов. Это не 5.

Если удалить «корова» (6 символов), и 1 запятую и 1 пробел = 8 символов. Не 5.

Если удалить «баран» (5 символов), и 0 запятых и 0 пробелов = 5 символов. Это подходит. Удалено слово «баран».

Если удалить «коза» (4 символа), и 1 запятую = 5 символов. Это подходит. Удалено слово «коза».

Если удалить «бык» (3 символа), и 2 запятых = 5 символов. Это подходит. Удалено слово «бык».

Если удалить «Як» (2 символа), и 3 запятых = 5 символов. Это подходит. Удалено слово «Як».

Условие «два пробела не должны идти подряд» говорит о том, что между словами были одиночные пробелы. Также были запятые.

Проверим вариант с «Корова». Удаление «Корова» (6 символов) предполагает, что других удаленных символов было -1. Это невозможно, так как удаляется целое слово.

Вернемся к условию: «вычеркнул из списка название одного из животных. Заодно он вычеркнул ставшие лишними запятые и пробелы».

Если удалить «Баран» (5 букв), то удаляется 5 символов. Это совпадает с разницей в 40 бит.

Исходный текст: «Як, бык, коза, баран, корова, верблюд, шиншилла — домашние животные».

Текст после удаления «Баран»: «Як, бык, коза, корова, верблюд, шиншилла — домашние животные».

Удалено: «баран» (5 символов).

Пробел после «коза» и перед «корова» становится лишним, если «баран» убран. Или наоборот.

Давайте посчитаем символы в исходном предложении (включая пробелы и знаки препинания):

«Як, бык, коза, баран, корова, верблюд, шиншилла — домашние животные»

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

Всего 69 символов.

Если удалено 40 бит, это 5 символов. Значит, новый текст содержит 69 - 5 = 64 символа.

Рассмотрим вариант удаления «баран». Это 5 символов. Если удалить только «баран», то текст станет: «Як, бык, коза, корова, верблюд, шиншилла — домашние животные». Количество символов: 64.

Проверим, что запятые и пробелы не стали лишними. Перед «баран» была запятая и пробел. После «баран» была запятая и пробел. Если удалить «баран», то запятая перед «корова» и пробел перед «корова» остаются.

Удалено 5 символов. Это слово «баран».

Ответ: баран