/
mayaoaoa
/
HSE_python
Обзор
Документация
Войти
/
mayaoaoa
/
HSE_python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
rle.py
75 строк
2 KB
mayaoaoa
renamed
07 дек 2025, 01:17
07 дек 2025, 01:17
5c28d98
Код
Авторство
О чём код?
import random def generate_server_status_string(length=20): return ''.join(random.choice("UDLR") for _ in range(length)) def rle_encode(s): result = [] current_symbol = s[0] cnt = 1 for i in range(1, len(s)): if s[i] == current_symbol: cnt += 1 else: if cnt <= 2: result.append(current_symbol * cnt) else: result.append(f"{current_symbol}{cnt}") current_symbol = s[i] cnt = 1 if cnt <= 2: result.append(current_symbol * cnt) else: result.append(f"{current_symbol}{cnt}") return ''.join(result) def compression_ratio(original, compressed): if len(compressed) == 0: return float('inf') if len(original) > 0 else 1 return len(original) / len(compressed) def longest_downtime(s): max_ = 0 cur = 0 for c in s: if c == 'D': cur += 1 else: max_ = max(max_, cur) cur = 0 return max(max_, cur) def calculate_incidents(s): incidents = 0 is_subs_d = False for c in s: if c == 'D': if not is_subs_d: incidents += 1 is_subs_d = True else: is_subs_d = False return incidents n = int(input("Введите длину строки состояний сервера: ")) if n <= 0: print("Длина должна быть неотрицательным числом.") else: input_string = generate_server_status_string(n) print(f"Входная строка: {input_string}") rle = rle_encode(input_string) print(f"RLE-закодированная строка: {rle}") ratio = compression_ratio(input_string, rle) print(f"Коэффициент сжатия: {ratio:.2f}") longest_d = longest_downtime(input_string) print(f"Самый длинный простой D: {longest_d}") number_incidents = calculate_incidents(input_string) print(f"Количество инцидентов: {number_incidents}")