Advertisement
selebry

fsdfsd

Nov 24th, 2023
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1.  
  2.  
  3. alphabet_map = {}
  4.  
  5. for i, letter in enumerate(' АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'):
  6. binary = bin(i)[2:]
  7. alphabet_map[letter] = binary.zfill(5)
  8. if letter == 'Е':
  9. alphabet_map['Ё'] = alphabet_map[letter]
  10. elif letter == 'И':
  11. alphabet_map['Й'] = alphabet_map[letter]
  12. print(alphabet_map)
  13.  
  14.  
  15. def coder(path_to_text, path_to_gamma, path_to_out):
  16.  
  17.  
  18. # Открываем файл для чтения
  19. with open(path_to_text, 'r', encoding='utf8') as file:
  20. # Читаем содержимое файла
  21. text = file.read()
  22. text = text.upper()
  23. print(len(text))
  24. # Преобразуем текст в одну строку с помощью Alphabet Map
  25. converted_text = ''.join(alphabet_map[letter] for letter in text)
  26. print(len(converted_text))
  27. # Открываем файл для записи
  28. with open('texts/binOut.txt', 'w', encoding='utf8') as file:
  29. # Записываем преобразованный текст в файл
  30. file.write(converted_text)
  31.  
  32. # Открываем файлы для чтения
  33. with open(path_to_gamma, 'r', encoding='utf8') as file1:
  34. # Читаем содержимое файлов
  35. text1 = file1.read()
  36. sum_text = ""
  37. for el1, el2 in zip(text1, converted_text):
  38. sum_text += str(int(el1 != el2))
  39.  
  40. with open(path_to_out, 'w', encoding='utf8') as file:
  41. # Записываем преобразованный текст в файл
  42. file.write(sum_text)
  43. return 1
  44.  
  45. def decoder(gamma_path, coder_path):
  46. with open(coder_path, 'r', encoding='utf8') as file1, open(gamma_path, 'r', encoding='utf8') as file2:
  47. # Записываем преобразованный текст в файл
  48. text_coder = file1.read()
  49. text_gamma = file2.read()
  50.  
  51. text_decode = ""
  52.  
  53. for el_coder, el_gamma in zip(text_coder, text_gamma):
  54. if el_coder == '1':
  55. if el_gamma == '0':
  56. text_decode += '1'
  57. else:
  58. text_decode += '0'
  59. else:
  60. text_decode += el_gamma
  61.  
  62. with open('texts/binOut2.txt', 'w', encoding='utf8') as file:
  63. # Записываем преобразованный текст в файл
  64. file.write(text_decode)
  65.  
  66. # Создаем пустой список для хранения преобразованного текста
  67. converted_text = []
  68.  
  69. # Разбиваем двоичный текст на группы по 5 символов
  70. for i in range(0, len(text_decode), 5):
  71. # Получаем группу символов
  72. group = text_decode[i:i + 5]
  73. # Используем alphabet_map для получения соответствующего символа
  74. letter = next((letter for letter, binary in alphabet_map.items() if binary == group), None)
  75. # Если символ найден, добавляем его в список
  76. if letter is not None:
  77. converted_text.append(letter)
  78.  
  79. # Преобразуем список в строку и возвращаем ее
  80. converted_text = ''.join(converted_text)
  81. return converted_text
  82.  
  83. coder_path = 'texts/coderText.txt'
  84. gamma_path = 'texts/binGamma.txt'
  85.  
  86. print(coder('texts/textInput.txt', gamma_path, coder_path))
  87. print(decoder(gamma_path, coder_path))
  88.  
  89.  
  90.  
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement