/
m0p3x
/
python_for_data_analysis
Обзор
Документация
Войти
/
m0p3x
/
python_for_data_analysis
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
homework_13.11
66 строк
2 KB
m0p3x
update homework_13.11
03 дек 2025, 02:01
03 дек 2025, 02:01
fa0494e
Код
Авторство
О чём код?
import random #можно изменить длину, но чем больше длина - тем ближе будет сжатие к 1.1 (по вводным данным сказано просто через рандом делать каждый раз строчку) # def generate_string(length=150): # # symbols = "UDLR" # # return ''.join(random.choice(symbols) for _ in range(length)) def generate_random_string(): count = random.randint(1,10) list = [] for i in range(count): list.append(random.randint(1,20)) state = ['U','D','L','R'] Server_data = '' for i in list: Server_data += state[random.randint(0,3)]*i return Server_data def rle_encode(text): result = "" i = 0 while i < len(text): count = 1 while i + count < len(text) and text[i + count] == text[i]: count += 1 if count <= 2: result += text[i] * count else: result += text[i] + str(count) i += count return result def analyze(text): encoded = rle_encode(text) compression = len(text) / len(encoded) max_d = 0 current = 0 for char in text: if char == 'D': current += 1 if current > max_d: max_d = current else: current = 0 incidents = 0 for i in range(len(text)): if text[i] == 'D' and (i == 0 or text[i - 1] != 'D'): incidents += 1 return encoded, compression, max_d, incidents #выводы в ран input_str = generate_random_string() print(f"Дано: {input_str}") encoded, compression, max_d, incidents = analyze(input_str) print(f"Закодированная строка: {encoded}") print(f"Сжатие в {compression:.1f} раз") print(f"Максимальный простой д: {max_d}") print(f"Количество инцидентов с д: {incidents}")