Для определения, какое слово было вычеркнуто из списка, начнем с того, что необходимо понять, сколько байтов занимали символы в исходном тексте и в тексте после удаления одного слова и лишних пробелов.
Давайте сначала запишем исходный текст:
«Is, for, pass, raise, return, finally - служебные слова языка программирования Python».
Теперь определим длину этого текста. Каждый символ в кодировке КОИ-32 занимает 32 бита, что эквивалентно 4 байтам.
Изначально в тексте 10 слов, и, каждая запятая после слова тоже занимает место. Учитывая, что вычеркнули одно слово, возможно, также удалили запятую перед ним, если она была.
Обширный анализ покажет, что в предложении присутствуют следующие слова языка программирования Python: pass, raise, return, finally.
Сравниваем размер текста до удаления и после. Если новый размер уменьшился на 32 байта, это означает, что из текста было вычеркнуто 8 байтов (заменной одной запятой на дополнительный пробел для одного слова, если такое было).
Проверяя размер слова:
pass- 4 байта (1 слово)raise- 5 байтов (1 слово)return- 6 байтов (1 слово)finally- 7 байтов (1 слово)
Очевидно, что вычеркнуть можно было только одно слово, размером 4, 5, 6 или 7 байтов.
Проверяя каждое слово, мы находим, что возможные слова по размеру: pass (4 байта), raise (5 байтов), return (6 байтов), finally (7 байтов).
Итак, если вычеркнули finally, то уменьшение в 32 байта будет замикшировано и место из-за пробела уйдёт. Поэтому вычеркнутое слово, которое соответствует уменьшению размера на 32 байта — это «finally».
