Проверьте пустую строку, одиночный символ, длинную серию, чередование и повтор символа после другой серии. Отдельно нужны цифры, пробелы и нелатинские символы.
Какие 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 выявляет ошибочное объединение всех одинаковых символов вместо серий. Последняя серия должна попасть в результат и без следующего отличающегося символа. Список пар не смешивает цифры исходной строки с числом повторений. Поведение для нестроковых аргументов проверяют отдельно, если оно определено контрактом.