Problema:
Você deve criar um programa que faça o seguinte:
- pega uma grande sequência de texto em minúsculas e conta todas as ocorrências de cada letra.
- então você coloca as letras em ordem, da maior para a menor ocorrência.
- então você pega essa lista e a transforma em um codificador / decodificador para o texto.
- depois codifica o texto com essa cifra.
Dificíl de entender? Veja este exemplo:
Exemplo:
Entrada de texto:
Lorem ipsum dolor sente-se no meio, consectetur elip adipiscing. Nunc sed dui e nisi euismod pellentesque ac sed enim. Nullam auctor justo quis diam faucibus, eu fringilla é porttitor. Pellentesque vel pharetra nisl. O vestíbulo congela ultrices magna a fringilla. Quisque porttitor, risus suscipit pellentesque tristique, orci lorem accumsan nisi, scelerisque viverra turpis metus sit amet sapien. Fusce facilisis diam turpis, ne lobortis dui blandit ne. Vestibulum ac urna ut lacus commodo sollicitudin nec non velit. Nulla cursus urna sem, e 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. Número inteiro temporário, viverra varius neque mattis in. et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi nec neque vel ante pulvinar mollis eu in ipsum.
Converter em minúsculas.
Contagem de caracteres (por letra. Espaços e pontuação ignorados):
[('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)]
Contagem de caracteres ordenada:
[('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)]
Em seguida, crie uma tabela de pesquisa usando as listas originais e classificadas:
abcdefghijklmnopqrstuvwxyz
||||||||||||||||||||||||||
eisultnarocmdpvqbgfhjkwxyz
Dicionário 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'}
E agora codifique o texto original com esta tabela de pesquisa:
«Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps gripe ujr eh prfr ljrfdvu qlmmlphlfbjl es gripe 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 edlh feqrl. Fjfsl tesrmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp pls pvp klmrh. 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. Paeflmmjf 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. '
Eu amo python!
Regras:
- Seu programa aceitará uma string e emitirá uma.
- Converta todas as entradas em minúsculas antes de fazer qualquer coisa
- Não me importo como você classifica a lista, mas conta apenas letras minúsculas
- Pontos de bônus (-30) por criar um decodificador (sem copiar a lista de decodificação), faça-o do zero
- Isto é código-golfe, então o código mais curto vence!
- Diverta-se!
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch
? ISSO É IMPOSSÍVEL! Você precisaria ter a chave (sua "lista de descriptografia", também conhecida como "tabela de pesquisa") para poder fazer isso. Apenas pegar um texto cifrado e esperar que alguém forneça um decodificador que o transforme novamente em texto sem formatação, sem o uso de nenhuma chave, é como se você estivesse nos pedindo para publicar uma pergunta no StackOverflow sem digitar nenhuma letra ou número. A teoria da informação já nos diz que você não pode obter informações do nada ... então sua cifra de substituição precisa dessa tabela de pesquisa (também conhecida como chave).