Различия между версиями 1 и 2
Версия 1 от 2019-11-14 23:39:17
Размер: 2565
Редактор: FrBrGeorge
Комментарий:
Версия 2 от 2019-11-19 14:44:18
Размер: 2566
Редактор: FrBrGeorge
Комментарий: a bug in solution :(
Удаления помечены так. Добавления помечены так.
Строка 17: Строка 17:
(38, 'NETI GARMWUSOH.', 'GW*_N?>_[M__?_O_;W^_/WU_IO=_][]_;__') (38, 'NETI GARMWUSOH.', 'GW*_N?>_[M__?_O_;W^_/WU_IO=_][]_;__ ')

Написать модуль, в котором будет 4 функции. Первые две: shex(n), которая переводит число n в 64-ричное представление, и xehs(s), которая переводит строку с 64-ричным числом в число. 64-ричная система счисления пользуется «цифрами» с ASCII-кодом от 32 до 32+63=95 (т. е. от пробела до подчёркивания) включительно. Функция encode(txt) упаковывает строку txt, состоящую из символов диапазона " "…"_" по следующим правилам. Символы, встретившиеся в тексте, упорядочиваются по убыванию частоты их появления в тексте (вторичный ключ — сам символ). Самому частому (и с наибольшим ASCII-кодом, если таковых несколько) ставится в соответствие бит "0", следующему — последовательность битов "10", следующему — "110", и т. д. Биты записываются единой строкой, строка дополняется нулями, если это необходимо, и превращается в 64-ричное число. Функция encode(txt) возвращает кортеж (длина txt, строка упорядоченных символов, закодированная строка). Четвёртая функция, decode(length, chars, code), раскодирует строку code, используя описанное выше сопоставление chars битам, и возвращает раскодированную строку длиной length.

print(xehs("BREAKFAST"))
print(shex(10844745761445995))
res = encode("ENGINEERING WITHOUT MANAGEMENT IS ART.")
print(res)
txt = decode(*res)
print(txt)

9792630319357172
FASTBREAK
(38, 'NETI GARMWUSOH.', 'GW*_N?>_[M__?_O_;W^_/WU_IO=_][]_;__ ')
ENGINEERING WITHOUT MANAGEMENT IS ART.

Спойлер:

  • Вот словарь для текста:
    • 'N':0 'E':10 'T':110 'I':1110 ' ':11110 'G':111110 'A':1111110 'R':11111110 'M':111111110 'W':1111111110 'U':11111111110 'S':111111111110 'O':1111111111110 'H':11111111111110 '.':111111111111110


CategoryHomework

LecturesCMC/PythonIntro2019/Homework_BitCoding (последним исправлял пользователь FrBrGeorge 2019-11-19 14:44:18)