Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 / generate

.py
Скачиваний:
9
Добавлен:
18.06.2024
Размер:
2 Кб
Скачать
import string
import random

def generate_additional_symbols():
    # Генерация дополнительных символов, исключая русские заглавные буквы
    additional_symbols = "!@#$%^&*()_+-=[]{};':\",.<>/?|`~" + \
                         "".join(chr(code) for code in range(128, 1024) if not (0x410 <= code <= 0x42F or code == 0x401))
    # Преобразование строки в список для корректной конкатенации
    additional_symbols_list = list(additional_symbols)[:650 - len(string.ascii_letters + string.digits)]
    return additional_symbols_list

def generate_custom_mapping():
    custom_counts = {
        'О': 45, 'Е': 36, 'Ё': 36, 'А': 31, 'И': 31, 'Н': 27, 'Т': 27,
        'С': 23, 'Р': 20, 'В': 19, 'Л': 18, 'К': 14, 'М': 13, 'Д': 13,
        'П': 12, 'У': 11, 'Б': 10, 'Я': 9, 'Ы': 8, 'З': 8, 'Ь': 7, 
        'Ъ': 7, 'Г': 7, 'Ч': 6, 'Й': 5, 'Х': 5, 'Ж': 4, 'Ш': 3, 
        'Ю': 3, 'Ц': 2, 'Щ': 2, 'Э': 2, 'Ф': 1
    }

    mapping = {}
    base_symbols = list(string.ascii_letters + string.digits)
    additional_symbols = generate_additional_symbols()
    symbols = base_symbols + additional_symbols
    random.shuffle(symbols)

    for letter, num_subs in custom_counts.items():
        if len(symbols) < num_subs:
            raise ValueError("Недостаточно символов для замены. Расширьте список доступных символов.")
        mapping[letter] = [symbols.pop() for _ in range(num_subs)]

    return mapping

mapping = generate_custom_mapping()

# Печать маппинга для проверки
for letter, symbols in mapping.items():
    print(f"{letter}: {symbols}")
Соседние файлы в папке ЛР2