Контрольные задания > 4. В одной из кодировок Unicode каждый символ кодируется 16 битами. Петя написал текст (в нём нет лишних пробелов): «Ель, кедр, сосна, кипарис, лиственница, можжевельник — хвойные растения». Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 26 байт меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название хвойного растения.
Вопрос:
4. В одной из кодировок Unicode каждый символ кодируется 16 битами. Петя написал текст (в нём нет лишних пробелов): «Ель, кедр, сосна, кипарис, лиственница, можжевельник — хвойные растения». Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 26 байт меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название хвойного растения.
Составим список названий хвойных растений из текста:
Ель
кедр
сосна
кипарис
лиственница
можжевельник
Теперь посчитаем количество символов в каждом названии, включая запятую и пробел после него (или тире вместо запятой и пробела):
«Ель, » - 5 символов
«кедр, » - 6 символов
«сосна, » - 7 символов
«кипарис, » - 9 символов
«лиственница, » - 13 символов
«можжевельник — » - 14 символов
Ученик вычеркнул одно название и некоторые запятые и пробелы. Ставшие лишними запятые и пробелы — это запятая и пробел после названия, если оно было не последним, или тире и пробел, если оно было последним перед «хвойные растения».
Общее количество удалённых символов — 13.
Проверим, какое название, будучи вычеркнутым, могло привести к удалению 13 символов (включая запятую/тире и пробел после него):
Если вычеркнуто «Ель, » (5 символов) + 1 запятая + 1 пробел = 7 символов (не подходит).
Если вычеркнуто «кедр, » (6 символов) + 1 запятая + 1 пробел = 8 символов (не подходит).
Если вычеркнуто «сосна, » (7 символов) + 1 запятая + 1 пробел = 9 символов (не подходит).
Если вычеркнуто «кипарис, » (8 символов) + 1 запятая + 1 пробел = 10 символов (не подходит).
Если вычеркнуто «лиственница, » (12 символов) + 1 запятая + 1 пробел = 14 символов (слишком много).
Если вычеркнуто «можжевельник — » (13 символов) + 1 тире + 1 пробел = 15 символов (слишком много).
Перечитаем условие: «Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд». Это означает, что если вычеркивалось название, то и связующие знаки препинания (запятая/тире и пробел) тоже удалялись.
Давайте предположим, что удаление названия растения сопровождалось удалением запятой и пробела (если это не последнее слово в списке), или тире и пробела (если это последнее слово).
Итак, мы ищем слово, длина которого + 2 (запятая и пробел) = 13 символов.
Следовательно, длина самого слова должна быть: 13 - 2 = 11 символов.
Ищем в списке слово длиной 11 символов:
«Ель» - 3 символа
«кедр» - 4 символа
«сосна» - 5 символов
«кипарис» - 7 символов
«лиственница» - 12 символов
«можжевельник» - 14 символов
Снова перечитаем условие: «Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 26 байт меньше, чем размер исходного предложения.»
Что-то не сходится. Перечитаем: «Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.»
Значит, после вычеркивания слова, оно было заменено на «— хвойные растения».
Размер сократился на 26 байт, что равно 13 символам.
Это означает, что удаленное слово вместе со своей запятой (или тире) и пробелом составляло 13 символов.
Рассмотрим удаления:
Если удалено «Ель, » (5 символов), то осталось «кедр, сосна, кипарис, лиственница, можжевельник — хвойные растения».
Удалено: «Ель» (3) + «, » (2) = 5 символов. Нам нужно 13.
Если удалено «кедр, » (6 символов), то удалено: «кедр» (4) + «, » (2) = 6 символов.
Если удалено «сосна, » (7 символов), то удалено: «сосна» (5) + «, » (2) = 7 символов.
Если удалено «кипарис, » (9 символов), то удалено: «кипарис» (7) + «, » (2) = 9 символов.
Если удалено «лиственница, » (13 символов), то удалено: «лиственница» (12) + «, » (2) = 14 символов.
Если удалено «можжевельник — » (14 символов), то удалено: «можжевельник» (14) + «— » (2) = 16 символов.
Здесь явное противоречие. Давайте внимательно посмотрим на формулировку: «Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.»
Возможно, имеется в виду, что при вычеркивании слова, если оно было не последним, удалялась запятая и пробел. Если последнее, то тире и пробел.
Количество удалённых символов = 13.
Рассмотрим длины слов: Ель(3), кедр(4), сосна(5), кипарис(7), лиственница(12), можжевельник(14).
Пусть удалили слово X. Тогда длина(X) + длина_разделителя = 13.
Если удалили 'Ель', то удалили 3 символа 'Ель' + 2 символа ', ' = 5. Не 13.
Если удалили 'кедр', то удалили 4 символа 'кедр' + 2 символа ', ' = 6. Не 13.
Если удалили 'сосна', то удалили 5 символов 'сосна' + 2 символа ', ' = 7. Не 13.
Если удалили 'кипарис', то удалили 7 символов 'кипарис' + 2 символа ', ' = 9. Не 13.
Если удалили 'лиственница', то удалили 12 символов 'лиственница' + 2 символа ', ' = 14. Не 13.
Если удалили 'можжевельник', то удалили 14 символов 'можжевельник' + 2 символа '— ' = 16. Не 13.
Возможно, не все запятые и пробелы были удалены. «два пробела не должны идти подряд».
Прочитаем ещё раз: «Ученик вычеркнул из списка название одного из растений. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 26 байт меньше, чем размер исходного предложения.»
26 байт = 13 символов.
Значит, суммарно удалено 13 символов.
Рассмотрим, какое название, если его вычеркнуть, вместе с соответствующими знаками препинания, составит 13 символов.
«Ель, » — 5 символов.
«кедр, » — 6 символов.
«сосна, » — 7 символов.
«кипарис, » — 9 символов.
«лиственница, » — 13 символов.
«можжевельник — » — 14 символов.
Итак, если вычеркнули «лиственница», то было удалено: 12 символов «лиственница» + 2 символа «, » = 14 символов.
А если удалили «лиственница», то осталось: «Ель, кедр, сосна, кипарис, можжевельник — хвойные растения».
Количество символов в названиях: 3 + 4 + 5 + 7 + 12 + 14 = 45.
Количество разделителей (запятых и тире): 5 запятых + 1 тире = 6.
Общее количество символов в списке: 45 (названия) + 5*2 (запятая+пробел) + 1*2 (тире+пробел) = 45 + 10 + 2 = 57 символов (без учета самого слова "хвойные растения").
Но нам дан весь текст. Давайте посчитаем все символы в исходном предложении: