Какие assert-проверки нужны для RLE-сжатия

Проверьте пустую строку, одиночный символ, длинную серию, чередование и повтор символа после другой серии. Отдельно нужны цифры, пробелы и нелатинские символы.

Короткий ответ

Что ответить на собеседовании

Проверьте пустую строку, одиночный символ, длинную серию, чередование и повтор символа после другой серии. Отдельно нужны цифры, пробелы и нелатинские символы.

Подробный разбор

Ответ с пояснениями

Условие

Функция Python encode(text) должна возвращать список пар (символ, длина серии) для подряд идущих одинаковых символов. Например, 'aaabb' → [('a', 3), ('b', 2)]. Сформируйте тесты; символом считается элемент строки Python.

Ответ

Проверьте пустую строку, одиночный символ, длинную серию, чередование и повтор символа после другой серии. Отдельно нужны цифры, пробелы и нелатинские символы.

Базовый набор проверок контракта:

assert encode('') == []
assert encode('a') == [('a', 1)]
assert encode('aaabb') == [('a', 3), ('b', 2)]
assert encode('aba') == [('a', 1), ('b', 1), ('a', 1)]
assert encode('a' * 12) == [('a', 12)]
assert encode('11122') == [('1', 3), ('2', 2)]
assert encode('  a ') == [(' ', 2), ('a', 1), (' ', 1)]
assert encode('яяю') == [('я', 2), ('ю', 1)]

Случай aba выявляет ошибочное объединение всех одинаковых символов вместо серий. Последняя серия должна попасть в результат и без следующего отличающегося символа. Список пар не смешивает цифры исходной строки с числом повторений. Поведение для нестроковых аргументов проверяют отдельно, если оно определено контрактом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее