перекодировщик чисел и букв

import math

# Полный русский алфавит (33 буквы)
alphabet = [
    'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й',
    'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф',
    'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'
]

def get_letter(num):
    # Если 0, возвращаем 'о'
    if num == 0:
        return 'о'
    # Рекурсивно делим на 2 и округляем, пока <= 33
    while num > 33:
        num = round(num / 2)
    # Если после деления всё равно >33, берём по модулю
    if num > 33:
        num = num % 33
    # Если num == 0 после модуля, ставим 'о'
    if num == 0:
        return 'о'
    # Возвращаем букву (индекс 0-based)
    return alphabet[num - 1]

# Чтение из файла number.txt
try:
    with open('number.txt', 'r') as file:
        data = file.readlines()  # Читаем все строки
except FileNotFoundError:
    print("Файл number.txt не найден. Убедитесь, что он в той же директории.")
    exit()

# Обработка и вывод
result = []
for line in data:
    line = line.strip()  # Убираем лишние пробелы и переносы
    if line:  # Если строка не пустая
        numbers = list(map(int, line.split()))  # Парсим числа
        for num in numbers:
            result.append(get_letter(num))
        result.append('\n')  # Новая строка после каждой исходной

# Выводим результат
output = ''.join(result).strip()
print("Результат перекодировки:")
print(output)



 matrix mod ai {11*14}


    20 56 21 09 20 25 00 00 00 00 16
    13 81 48 63 71 38 88 12 02 01 00
    80 60 77 50 91 20 00 24 03 10 02
    20 10 20 10 20 10 20 10 20 10 00
    19 51 54 20 25 40 11 32 55 01 04
    48 25 05 94 27 86 50 19 93 10 00
    10 20 10 15 20 10 15 20 10 15 06
    52 00 23 00 21 20 25 00 11 01 00
    44 02 22 62 93 80 85 14 00 10 08
    10 11 12 13 14 15 16 17 18 19 00
    17 10 06 12 60 00 10 10 20 01 10
    00 01 00 01 00 01 00 01 00 11 00
    20 22 24 26 28 30 32 34 36 38 00
    27 19 87 00 14 40 29 30 31 32 33

 

Результат перекодировки:

тъузтчооооо
лтцюрсфкбао
тьсчхтоцвиб
тититититио
сшщтчтйюъаг
цчдцщфчсхио
итинтинтине
шохоутчойао
фбфэхтумоиж
ийклмнопрсо
пиекьоиитаи
оаоаоаоаойо
тфцшъьюпрсо
щсфомтыьэюя







# Словарь для кодирования букв
encoding_dict = {
    'а': '01', 'б': '02', 'в': '03', 'г': '04', 'д': '05',
    'е': '06', 'ж': '07', 'з': '08', 'и': '09', 'к': '10',
    'й': '11', 'л': '12', 'м': '13', 'н': '14', 'о': '15',
    'п': '16', 'р': '17', 'с': '18', 'т': '19', 'у': '20',
    'ф': '21', 'х': '22', 'ц': '23', 'ч': '24', 'ш': '25',
    'щ': '26', 'ъ': '27', 'ы': '28', 'ь': '29', 'э': '30',
    'ю': '31', 'я': '32'
}

# Функция для кодирования текста
def encode_text(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        text = file.read()
   
    encoded_numbers = []
   
    for char in text:
        if char.isdigit():  # Если символ - цифра, добавляем его как есть
            encoded_numbers.append(char)
        elif char in encoding_dict:  # Если символ - буква, кодируем его
            encoded_numbers.append(encoding_dict[char])
   
    return encoded_numbers

# Функция для вывода матрицы
def print_matrix(encoded_numbers, row_length=12):
    for i in range(0, len(encoded_numbers), row_length):
        row = encoded_numbers[i:i + row_length]
        print(' '.join(row).ljust(row_length * 3))  # Выравнивание по ширине

# Основная программа
if __name__ == "__main__":
    file_path = 'текст.txt'  # Путь к файлу
    encoded_numbers = encode_text(file_path)
    print_matrix(encoded_numbers)




10 01 16 10 01 16 10 15 16 10 15 16
10 09 16 10 09 16 10 15 14 10 15 14
19 09 10 19 09 10 19 15 10 19 15 10
12 15 19 12 15 19 10 15 05 10 15 05
17 15 19 17 15 19 14 15 19 14 15 19
18 15 17 18 15 19 18 15 12 18 15 12
14 15 12 14 15 12 12 09 10 12 09 10
02 09 04 02 09 04 16 09 14 16 09 14
18 15 14 18 15 14 19 15 14 19 15 14
05 15 17 05 15 17 03 15 19 03 15 19
02 15 04 02 15 04 12 15 04 12 15 04
05 15 14 05 15 14 05 09 14 05 09 14
18 19 15 18 19 15 13 15 14 13 15 14
04 15 14 04 15 14 14 15 18 14 15 18
17 01 08 17 01 08 05 03 01 05 03 01
15 05 09 14 15 05 09 14 10 15 05 10
15 05 03 06 17 03 06 17 18 06 19 18
06 19 05 09 14 05 09 14 14 15 03 14
15 03 00 00 00 00         


Рецензии