/
04543
/
python_for_data_analysis
Обзор
Документация
Войти
/
04543
/
python_for_data_analysis
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
run-length_encoding.py
60 строк
1 KB
Василий Ковалик
upload files
24 ноя 2025, 14:21
24 ноя 2025, 14:21
dac1aa0
Код
Авторство
О чём код?
import random symbols = ['U', 'D', 'L', 'R'] def generate_sequence(n): return ''.join(random.choice(symbols) for _ in range(n)) def rle_encode(s): if not s: return "" encoded = [] count = 1 for i in range(1, len(s)): if s[i] == s[i-1]: count += 1 else: if count <= 2: encoded.append(s[i-1] * count) else: encoded.append(s[i-1] + str(count)) count = 1 # конец строки if count <= 2: encoded.append(s[-1] * count) else: encoded.append(s[-1] + str(count)) return ''.join(encoded) def analyze(s): d_total = s.count('D') # максимальный блок D подряд max_d = 0 current = 0 for c in s: if c == 'D': current += 1 max_d = max(max_d, current) else: current = 0 return d_total, max_d seq = generate_sequence(50) encoded = rle_encode(seq) d_total, max_d = analyze(seq) compression_ratio = len(seq) / len(encoded) print("Исходная строка: ", seq) print("Сжатая строка: ", encoded) print("Во сколько раз сжато:", round(compression_ratio, 2)) print("Самый длинный подряд D:", max_d) print("Количество инцидентов (всего D):", d_total)