Advertisement
neongm

Untitled

Nov 16th, 2020
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.62 KB | None | 0 0
  1. from code_lab import lfind
  2.  
  3. def get_code(message, code_table):
  4.     for i in range(len(code_table)):
  5.         if code_table[i][0] in message: message=message.replace(code_table[i][0], code_table[i][1])
  6.     return message
  7.  
  8. def decode(code, code_table):
  9.     decoded = ''
  10.     while code:
  11.         for i in code_table:
  12.             if lfind(code, i[1]):
  13.                 code=code[len(i[1])::]
  14.                 decoded+=i[0]
  15.     return decoded
  16.  
  17. def main():
  18.     message = "ЕНОТА НЕТ"         # кодируемое сообщение
  19.     char_sep = '00'         # разделитель букв
  20.     space_separator = '000' # пробел
  21.     code_table = [['Е','10'+char_sep],        # таблица, составленная методом,
  22.                   ['Н','01'+char_sep],        # который пожелал остаться анонимным
  23.                   ['О','110'+char_sep],
  24.                   ['Т','1111'+char_sep],
  25.                   ['А','0010'+char_sep],
  26.                   [' ', space_separator]]
  27.     code = get_code(message, code_table)
  28.     decoded = decode(code, code_table)
  29.  
  30.     print('кодируемое сообщение: {}'.format(message))
  31.     print('полученный код сообщения: {}'.format(code))
  32.     print('вес изначального сообщения: {}\nвес закодированного: {}\nполученный код отличаетсся в {} раз'.format(len(message)*16, len(code), round(len(message)*16/len(code),2)))
  33.     print('расшифрованный код сообщения: {}'.format(decoded))
  34.  
  35. if __name__ == "__main__": main()
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement