Проблема:
Вы должны сделать программу, которая делает следующее:
- берет большую строку строчных букв и подсчитывает все вхождения каждой буквы.
- затем вы размещаете буквы по порядку от наибольшего до наименьшего числа случаев.
- затем вы берете этот список и превращаете его в кодировщик / декодер для текста.
- затем кодирует текст с этим шифром.
Сложно понять? Смотрите этот пример:
Пример:
Введите текст:
Lorem Ipsum Dolor Sit Amet, Concetetur Adipiscing Elit. Nunc sed dui at nisi euismod pellentesque ac sed enim. Nullam auctor justo quis diam faucibus, eu fringilla est porttitor. Pellentesque vel pharetra nisl. Вестибюль отравляет язвы магны и фринджиллы. Quisque porttitor, risus suscipit pellentesque tristique, orci lorem accumsan nisi, scelerisque viverra turpis metus sit amet sapien. Fusce facilisis diam turpis, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus commodo sollicitudin nec non Velit. Nulla cursus urna sem, tincidunt sem molestie vel. Nullam fringilla ante eu dolor bibendum, posuere iaculis nunc lacinia. Sed ac pretium est, Vel Scelerisque Nisl. Phasellus lobortis dolor sodales sapien mollis hendrerit. Integer Scelerisque Tempor Tellus, Viverra Varius Neque Mattis в. Integer Porta vestibulum NISL, et feugiat tortor tincidunt vel. Энейский Дигниссим Элефенд Фаучибус. Morbi nec neque vel ante pulvinar mollis eu in ipsum.
Преобразовать в нижний регистр
Количество символов (на одну букву. Пробелы и знаки препинания игнорируются):
[(«a», 49), («b», 11), («c», 34), («d», 22), («e», 93), («f», 9), ( «g», 10), («h», 3), («i», 89), («j», 1), («k», 0), («l», 61), («m ', 31), (' n ', 56), (' o ', 37), (' p ', 20), (' q ', 12), (' r ', 47), (' s ', 71), ('t', 59), ('u', 65), ('v', 15), ('w', 0), ('x', 0), ('y', 0) , ('z', 0)]
Упорядоченный счетчик символов:
[('e', 93), ('i', 89), ('s', 71), ('u', 65), ('l', 61), ('t', 59), ( 'n', 56), ('a', 49), ('r', 47), ('o', 37), ('c', 34), ('m', 31), ('d ', 22), (' p ', 20), (' v ', 15), (' q ', 12), (' b ', 11), (' g ', 10), (' f ', 9), ('h', 3), ('j', 1), ('k', 0), ('w', 0), ('x', 0), ('y', 0) , ('z', 0)]
Затем создайте таблицу поиска, используя исходные и отсортированные списки:
abcdefghijklmnopqrstuvwxyz
||||||||||||||||||||||||||
eisultnarocmdpvqbgfhjkwxyz
Словарь Python:
{'o': 'v', 'n': 'p', 'm': 'd', 'l': 'm', 'k': 'c', 'j': 'o', 'i': 'r', 'h': 'a', 'g': 'n', 'f': 't', 'e': 'l', 'd': 'u', 'c': 's', 'b': 'i', 'a': 'e', 'z': 'z', 'y': 'y', 'x': 'x', 'w': 'w', 'v': 'k', 'u': 'j', 't': 'h', 's': 'f', 'r': 'g', 'q': 'b', 'p': 'q'}
А теперь закодируйте исходный текст с помощью этой таблицы поиска:
'Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl es flu lprd. Njmmed ejshvg ojfhv bjrf ured tejsrijf, lj tgrpnrmme lfh qvghhrhvg. Plmmlphlfbjl klm qaeglhge prfm. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frh edh Fjfsl tesrmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Я думаю, что я буду знать, что я делаю. Njmme sjgfjf jgpe fld, eh hrpsrujph fld dvmlfhrl klm. Njmmed tgrpnrmme ephl lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Slu es qglhrjd lfh, klm fslmlgrfbjl prfm. Paidlmmjf mvivghrf uvmvg fvuemlf feqrlp dvmmrf alpuglgrh. Iphlnlg fslmlgrfbjl hldqvg hlmmjf, krklgge kegrjf plbjl dehhrf rp. Iphlnlg qvghe klfhrijmjd prfm, lh tljnreh hvghvg hrpsrujph klm. Alplep urnprffrd lmlrtlpu tejsrijf. Mvgir pls plbjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd. '
Я люблю питона!
Правила:
- Ваша программа примет строку и выведет ее.
- Преобразуйте весь ввод в нижний регистр, прежде чем делать что-либо
- Мне все равно, как вы делаете сортировку списка, но только считать строчные буквы
- Бонусные баллы (-30) за создание расшифровщика (не копируйте список расшифровок, делайте это с нуля)
- Это Код-гольфпоэтому выигрывает самый короткий код!
- Радоваться, веселиться!
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch? ЭТО НЕВОЗМОЖНО! Для этого вам понадобится ключ (ваш «список расшифровки» или «таблица поиска»). Просто взять зашифрованный текст и ожидать, что кто-нибудь предоставит расшифровщик, который преобразует его обратно в открытый текст без использования какого-либо ключа, как если бы вы просили нас отправить вопрос в StackOverflow без ввода букв или цифр. Теория информации уже говорит нам, что вы не можете получить информацию из ниоткуда ... поэтому вашему шифру замещения нужна эта таблица поиска (она же ключ).