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

ЛР2 / generate

.py
Скачиваний:
2
Добавлен:
18.06.2024
Размер:
1.81 Кб
Скачать
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