Policz znaki, zamień je w szyfr

9

Problem:

Musisz stworzyć program, który wykonuje następujące czynności:

  • pobiera duży ciąg małych liter i zlicza wszystkie wystąpienia każdej litery.
  • następnie układasz litery w kolejności od największego do najmniejszego wystąpienia.
  • następnie bierzesz tę listę i przekształca ją w koder / dekoder tekstu.
  • następnie koduje tekst za pomocą tego szyfru.

Ciężko zrozumieć? Zobacz ten przykład:

Przykład:

Wprowadź tekst:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sed dui i nisi euismod pellentesque ac sed enim. Nullam auctor justo quis diam faucibus, ue fringilla est porttitor. Pellentesque vel pharetra nisl. Vestibulum congue ultrices magna a fringilla. Quisque porttitor, risus suscipit pellentesque tristique, orci lorem accumsan nisi, scelerisque viverra turpis metus sit amet sapien. Fusce ułatwienia diam turpis, gdzie indziej niesklasyfikowane lobortis dui blandit, gdzie indziej niesklasyfikowane Vestibulum ac urna ut lacus commodo sollicitudin, gdzie indziej niesklasyfikowany. Nulla cursus urna sem, at 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 in. Integer porta vestibulum nisl, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi, gdzie indziej niesklasyfikowane, pulvinar mollis eu in ipsum.

Konwertuj na małe litery.

Liczba znaków (na literę. Spacje i interpunkcja są ignorowane):

[(„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)]

Liczba zamówionych znaków:

[(„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)]

Następnie utwórz tabelę odnośników, używając oryginalnych i posortowanych list:

abcdefghijklmnopqrstuvwxyz
||||||||||||||||||||||||||
eisultnarocmdpvqbgfhjkwxyz

Słownik 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'}

A teraz zakoduj oryginalny tekst za pomocą tej tabeli odnośników:

„Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps grypa 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 edlh feqrlp. 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. ”

Uwielbiam pytona!

Zasady:

  • Twój program zaakceptuje ciąg i wyprowadzi jeden.
  • Konwertuj wszystkie dane na małe litery przed zrobieniem czegokolwiek
  • Nie obchodzi mnie, jak sortujesz listę, ale liczę tylko małe litery
  • Punkty bonusowe (-30) za wykonanie deszyfratora (bez kopiowania listy deszyfrujących, zrób to od zera
  • To jest , więc wygrywa najkrótszy kod!
  • Baw się dobrze!
Doktor
źródło
Ile punktów za deszyfrator?
Cyfrowa trauma
To zabawne wyzwanie, ale metoda szyfrowania sprawiłaby, że kryptograf rozpłakałby się. Jest nie tylko szyfrem z pojedynczym podstawieniem, ale ma czelność wprowadzić rozpoznawalną i możliwą do wykorzystania stronniczość: im bardziej powszechna jest litera tekstu zaszyfrowanego w zaszyfrowanym języku, tym bardziej prawdopodobne jest, że tekst jawny leży blisko początku alfabetu. To cezar Cezara. ;-)
Jonathan Van Matre
@TheDoctor świetny pomysł, ale popełniłeś jeden mały błąd ... zaszyfrowany tekst powinien zaczynać się od odpowiednich zaszyfrowanych liter zgodnie z twoim algorytmem! :) Pierwsze zdanie zaczyna się teraz na M, drugie zdanie P i tak dalej ...
WallyWest
@DigitalTrauma - powiedzmy 30 punktów za deszyfrator
TheDoctor
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch? TO NIEMOŻLIWE! Aby móc to zrobić, musisz mieć klucz („listę deszyfrowania”, zwaną też „tabelą odnośników”). Samo zaszyfrowanie tekstu zaszyfrowanego i oczekiwanie, że ktoś dostarczy deszyfrator, który przekształci go z powrotem w tekst jawny bez użycia żadnego klucza, jest tak, jakbyś prosił nas o opublikowanie pytania na StackOverflow bez wpisywania liter lub cyfr. Teoria informacji mówi nam już, że nie możesz zdobyć informacji znikąd… więc twój szyfr podstawienia potrzebuje tabeli odnośników (inaczej klucza).
e-sushi

Odpowiedzi:

3

GolfScript, 39 znaków

:I{97,26,{97+}%{[.32-]I\-,}$+'{|}~'+=}%

Wersja online do testowania. Zauważ, że sortowanie nie jest zdefiniowane, jeśli wiele znaków ma taką samą liczbę w ciągu wejściowym.

Przykładowe dane wyjściowe

Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps grypa ujr eh prfr ljrfdvu qlmmlphlfbjl es flu lprd. Njmmed ejshvg ojfhv bjrf ured tejsrijf, lj tgrpnrmme lfh qvghhrhvg. Plmmlphlfbjl wlm qaeglhge prfm. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl wrwlgge hjgqrf dlhjf frh edlh feqrlp. Fjfsl tesrmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp pls pvp wlmrh. Njmme sjgfjf jgpe fld, eh hrpsrujph fld dvmlfhrl wlm. Njmmed tgrpnrmme ephl lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Slu es qglhrjd lfh, wlm fslmlgrfbjl prfm. Paeflmmjf mvivghrf uvmvg fvuemlf feqrlp dvmmrf alpuglgrh. Iphlnlg fslmlgrfbjl hldqvg hlmmjf, wrwlgge wegrjf plbjl dehhrf rp. Iphlnlg qvghe wlfhrijmjd prfm, lh tljnreh hvghvg hrpsrujph wlm. Alplep urnprffrd lmlrtlpu tejsrijf. Mvgir pls plbjl wlm ephl qjmwrpeg dvmmrf lj rp rqfjd.

Howard
źródło
Darn golfscript! zawsze wygrywa!
TheDoctor
3

Bash / coreutils, 91 znaków

tr a-z `echo {a..z} $1|fold -w1|grep '[a-z]'|sort|uniq -c|sort -rn|awk '{printf $2}'`<<<$1

Zapisz jako cipher.sh, chmod + x it i uruchom:

$ ./cipher.sh "Lorem ipsum dolor sit amet, consectetur 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. Vestibulum congue 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, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus commodo sollicitudin nec non velit. Nulla cursus urna sem, at 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 in. Integer porta vestibulum nisl, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi nec neque vel ante pulvinar mollis eu in ipsum."
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 jlm qaeglhge prfm. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl jrjlgge hjgqrf dlhjf frh edlh feqrlp. Fjfsl tesrmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp pls pvp jlmrh. Njmme sjgfjf jgpe fld, eh hrpsrujph fld dvmlfhrl jlm. Njmmed tgrpnrmme ephl lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Slu es qglhrjd lfh, jlm fslmlgrfbjl prfm. Paeflmmjf mvivghrf uvmvg fvuemlf feqrlp dvmmrf alpuglgrh. Iphlnlg fslmlgrfbjl hldqvg hlmmjf, jrjlgge jegrjf plbjl dehhrf rp. Iphlnlg qvghe jlfhrijmjd prfm, lh tljnreh hvghvg hrpsrujph jlm. Alplep urnprffrd lmlrtlpu tejsrijf. Mvgir pls plbjl jlm ephl qjmjrpeg dvmmrf lj rp rqfjd.
$ 
Cyfrowa trauma
źródło
2

Rubin, 104 92 91 znaków

Uratowałem sporo znaków dzięki @Chron

f=->(s){m=[*?a..?z];l=m.map{|x|[-s.downcase.count(x),x]};s.tr(m*'',l.sort.transpose[1]*'')}

Wersja online tutaj. Sortowanie znaków o tej samej liczbie nie jest zdefiniowane, jak wspomniano w innej odpowiedzi. Z wejściem „asdf” każda odpowiedź ma do tej pory inny wynik.

Innymi słowy: wszystkie odpowiedzi zachowują się tak samo (reprezentują kodowanie dekodowalne), gdy dane wejściowe zawierają cały alfabet, a każda litera ma unikalną liczbę.

David Herrmann
źródło
Kilka drobnych usprawnień: ("a".."z").to_amoże być [*?a..?z], m.joinmoże być m*''i def f(s)...endmoże byćf=->s{...}
Paul Prestidge
1

Mathematica 171

f@m_:=StringReplace[m,Thread[(CharacterRange["a",
FromCharacterCode[96+Length@(l=Reverse@SortBy[Tally[Select[Characters@m,
(LetterQ@#\[And]LowerCaseQ@#)&]],Last][[All,1]])]])->l ]]

Zakładając, że tjest to tekst Lorem ipsum.

f[t]

„Lvgld rqfjd uvmvg FrH edlh, svpflshlhjg eurqrfsrpn lmrh.Njps grypa ujr eh prfr ljrfdvu qlmmlphlfbjl es grypa lprd.Njmmed ejshvg ojfhv bjrf przy- gotowywane do podłączenia tejsrijf, lj tgrpnrmme LFH qvghhrhvg.Plmmlphlfbjl vlm qaeglhge prfm.Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme.Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl vrvlgge hjgqrf dlhjf frH edlh feqrlp.Fjfsl tesrmrfrf przy- gotowywane do podłączenia hjgqrf, pls mvivghrf ujr imepurh pls.Vlfhrijmjd es jgpe JH mesjf svddvuv fvmmrsrhjurp pls pvp vlmrh.Njmme sjgfjf jgpe FLD, eh hrpsrujph FLD dvmlfhrl vlm. Njmmed tgrpnrmme ephl lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre.Slu es qglhrjd LFH, vlm fslmlgrfbjl prfm.Paeflmmjf mvivghrf uvmvg fvuemlf feqrlp dvmmrf alpuglgrh.Iphlnlg fslmlgrfbjl hldqvg hlmmjf, vrvlgge vegrjf plbjl dehhrf rp.Iphlnlg qvghe vlfhrijmjd prfm,lh tljnreh hvghvg hrpsrujph vlm.Alplep urnprffrd lmlrtlpu tejsrijf.Mvgir pls plbjl vlm ephl qjmvrpeg dvmmrf lj rp rqfjd. "

Wygenerowane reguły zastąpienia Thread…-> lto:

{„a” -> „e”, „b” -> „i”, „c” -> „s”, „d” -> „u”, „e” -> „l”, „f” - > „t”, „g” -> „n”, „h” -> „a”, „i” -> „r”, „j” -> „o”, „k” -> „c”, „l” -> „m”, „m” -> „d”, „n” -> „p”, „o” -> „v”, „p” -> „q”, „q” -> „b”, „r” -> „g”, „s” -> „f”, „t” -> „h”, „u” -> „j”}

DavidC
źródło
1

K, 43

{x^(b!b^26$>#:'=a@&(a:_x)in b:"c"$97+!26)x}
tartin
źródło
1

C # 386

using System.Collections.Generic;using System.Linq;namespace N{class P{static void Main(string[]a){char[] f="abcdefghijklmnopqrstuvwxyz".ToCharArray();Dictionary<char,int>l=new Dictionary<char,int>();foreach (char c in f) l.Add(c, "Lorem ipsum dolor sit amet, consectetur 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. Vestibulum congue 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, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus commodo sollicitudin nec non velit. Nulla cursus urna sem, at 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 in. Integer porta vestibulum nisl, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi nec neque vel ante pulvinar mollis eu in ipsum.".ToLower().Trim().Count(v => v == c));foreach (KeyValuePair<char, int> i in l.OrderByDescending(p => p.Value))System.Console.Write(i.Key +""+i.Value);}}}

Bez kompresji.

using System.Collections.Generic;
using System.Linq;
namespace N {
    class P {
        static void Main(string[]a){
            char[] f="abcdefghijklmnopqrstuvwxyz".ToCharArray();
            Dictionary<char,int>l=new Dictionary<char,int>();
            foreach (char c in f) 
                l.Add(c, "Lorem ipsum dolor sit amet, consectetur 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. Vestibulum congue 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, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus commodo sollicitudin nec non velit. Nulla cursus urna sem, at 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 in. Integer porta vestibulum nisl, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi nec neque vel ante pulvinar mollis eu in ipsum.".ToLower().Trim().Count(v => v == c));
            foreach (KeyValuePair<char, int> i in l.OrderByDescending(p => p.Value))
                System.Console.Write(i.Key +""+i.Value);
        }
    }
}
PauloHDSousa
źródło
Nie dołączaj ciągu wejściowego do liczby znaków
TheDoctor
Czy w ogóle to uruchomiłeś ? Wyjście: e93i89s71u65l61t59n56a49r47o37c34m31d22p20v15q12b11g10f9h3j1k0w0x0y0z0. I nie zbliża się nawet do wyzwania.
RobIII
0

PHP, 151

(z ustawieniem short_open_tag = On)

<?$c=array_slice(count_chars(strtolower($s=$argv[1])),97,26,1);arsort($c);echo strtr($s,array_combine(range('a','z'),array_map('chr',array_keys($c))));

To oczekuje, że tekst będzie pierwszym argumentem skryptu. Tak jak:

php cypher.php "Lorem ipsum [...]"
Przyzwoity Dabbler
źródło
0

R, 137

l=letters;s=strsplit(readline(),"")[[1]];g=grep("[a-z]",s);s[g]=names(sort(table(factor(tolower(s),l)),d=T))[match(s[g],l)];cat(s,sep="")

Dane wyjściowe (na podstawie omawianego przykładu):

Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps grypa 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 edlh feqrlp. 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.

Sven Hohenstein
źródło
0

Smalltalk, 138

wejście ws:

m:=(s select:[:c|cisLetter])asLowercase asBag sortedCounts map:#value.
i:=($ato:$z).m:=m,(i copyWithoutAll:m).
s copyTransliterating:i to:m

dekoder to:

s copyTransliterating:m to:i

ale ponieważ (jeśli dobrze rozumiem) nie mogę ponownie użyć „i” i „m”, zagram bez niego. Powyższy kod zawiera dwa dodatkowe CR dla czytelności, które nie zostały policzone w liczbie znaków.

blabla999
źródło
0

Clojure, 135

(Zakładając, że tekst wejściowy jest zawarty w var s)

(let[a(map char(range 97 123))m(->> s .toLowerCase frequencies(sort-by val >)keys(filter(set a))(zipmap a))](apply str(map #(m % %)s)))
Daniel Janus
źródło
0

Python 2.7 (147)

Nie jest to najkrótszy kod, ale ponieważ Python nie jest jeszcze reprezentowany i jak widzę „Kocham Pythona!” w ustawianiu problemów, proszę bardzo,

import sys;s=sys.argv[1];a=map(chr,range(97,123));print"".join([sorted(a,key=lambda x:-s.lower().count(x))[ord(c)-97]if c in a else c for c in s])

Oczekuje, że ciąg wejściowy zostanie przekazany za pomocą wiersza polecenia. (liczba znaków jest zmniejszona do 122, jeśli łańcuch wejściowy został magicznie wstawiony do zmiennej „s”)

a=map(chr,range(97,123));print"".join([sorted(a,key=lambda x:-s.lower().count(x))[ord(c)-97]if c in a else c for c in s])

Ouput

Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps grypa 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 edlh feqrlp. 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.

camelthemammel
źródło
Tak, zrobiłem to wszystko w 20 wierszach Pythona, ale jest znacznie dłuższy niż twój
TheDoctor
0

Perl, 84

$c{$_}++for lc($_=<>)=~/./g;@h{a..z}=sort{$c{$b}-$c{$a}}a..z;s/[a-z]/$h{$&}/ge;print

.

perl cipher.pl

... dane wejściowe zostały pominięte ..

Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps grypa ujr eh prfr lj rfdvu qlmmlphlfbjl es flu lprd. Njmmed ejshvg ojfhv bjrf ured tejsrijf, lj tgrpn rmme lfh qvghhrhvg. Plmmlphlfbjl klm qaeglhge prfm. Vlfhrijmjd svpnjl jmhgrslf d enpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frh edlh feqrlp. Fjfsl te srmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Vlfhrijmjd es jgpe jh mesjf s vddvuv fvmmrsrhjurp pls pvp klmrh. Njmme sjgfjf jgpe fld, eh hrpsrujph fld dvmlf hrl klm. Njmmed tgrpnrmme ephl lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Slu es qglhrjd lfh, klm fslmlgrfbjl prfm. Paeflmmjf mvivghrf uvmvg fvuemlf feqrl p dvmmrf alpuglgrh. Iphlnlg fslmlgrfbjl hldqvg hlmmjf, krklgge kegrjf plbjl dehh rf rp. Iphlnlg qvghe klfhrijmjd prfm, lh tljnreh hvghvg hrpsrujph klm. Alplep ur nprffrd lmlrtlpu tejsrijf. Mvgir pls plbjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd.

PS Czy to był żart dotyczący rozszyfrowania? Czy powinienem ubiegać się o 30 premii za udowodnienie, że jest to niemożliwe? Czy jest aabodszyfrowany do aablub bba? Albo babacabył to cacabaani ababcbw oryginale, ani babacasam, dosłownie?

użytkownik 2846289
źródło
0

C # - 393 bajtów

string e(string i){char[] f="abcdefghijklmnopqrstuvwxyz".ToCharArray();Dictionary<char,int>l=new Dictionary<char,int>();foreach (char c in f) l.Add(c, i.ToLower().Count(v => v == c));var w = (l.OrderByDescending(p => p.Value)).ToDictionary(q=>q.Key, y=>y.Value);var z = w.Keys.ToList();string r = "";foreach(char c in i) {if((int)c <=97 || (int)c>=122)r+=c;else r += z[((int)c-97)];}return r;}

Rozszerzona wersja odpowiedzi @ PauloHDSousa

Rajesz
źródło
Dlaczego w odpowiedzi masz dużo dodatkowych spacji?
Qwertiy