В одной из кодировок КОИ-8 каждый символ кодируется 8 битами. Дима написал текст (в нем нет лишних пробелов):
«J, Cg, Cat, Ruby, Swift, Delphi, Haskell — языки программирования».
Ученик вычеркнул из списка название одного из языков программирования. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 9 байт меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название языка программирования.
Чтобы понять, как решить данную задачу, давайте шаг за шагом проанализируем предложенный текст, размеры его в байтах и разницу после удаления названия языка программирования.
1. **Оригинальный текст**:
«J, Cg, Cat, Ruby, Swift, Delphi, Haskell — языки программирования».
2. **Список языков программирования**:
- J
- Cg
- Cat
- Ruby
- Swift
- Delphi
- Haskell
3. **Размер исходного текста**:
Все символы в кодировке КОИ-8 занимают 8 бит (1 байт) каждый. Мы будем считать количество символов, чтобы понять, сколько байт занимает исходное предложение.
- «J, Cg, Cat, Ruby, Swift, Delphi, Haskell — языки программирования» состоит из 78 символов.
- Это значит, что полный размер исходного текста = 78 байт.
4. **Размер после удаления**:
По условиям задачи, после вычеркнутого названия языка, новый размер текста на 9 байт меньше:
- Новый размер текста = 78 - 9 = 69 байт.
5. **Разберемся, что может быть удалено**:
Если удаляется название языка, которое состоит из N символов, новый размер текста также будет зависеть от знаков препинания и пробелов, которые были убраны.
Вычеркнув один язык программирования, мы должны убедиться, что текст может сократиться на 9 байт. Знак запятой после каждого языка и лишние пробелы также требуют внимания. Мы пробуем удалить названия языков и вычислить, сколько байт мы потеряем.
6. **Проверка каждого языка**:
- Удаляя J (2 байта с запятой) → 2 байта.
- Удаляя Cg (3 байта с запятой) → 3 байта.
- Удаляя Cat (4 байта с запятой) → 4 байта.
- Удаляя Ruby (5 байта с запятой) → 5 байт.
- Удаляя Swift (6 байт с запятой) → 6 байт.
- Удаляя Delphi (7 байт с запятой) → 7 байт.
- Удаляя Haskell (8 байт с запятой) → 8 байт.
Для остальных языков, на момент удаления, важно учитывать, что просто удаление самого названия языка не хватает, чтобы уменьшить на 9 байт, так как все они либо 2, либо 3, либо больше, и запятые могут сократить ещё несколько байт.
7. **Убираем пробелы и запятые**:
Определим, как это повлияет:
Если удалить, например, Ruby, то мы уберём "Ruby," (5 байт) и пробел после него (1 байт).
Но если мы уберём более длинное название как Haskell, а именно 'Haskell' (7) + запятая (1), пробел (1) → 9 байт.
Таким образом, вычеркивая "Haskell", мы теряем точно 9 байт.
8. **Ответ**:
Вычеркнутое название языка программирования — **Haskell**.