Hitung karakter, ubah menjadi sandi

9

Masalah:

Anda harus membuat program yang melakukan hal berikut:

  • mengambil string besar huruf kecil, dan menghitung semua kemunculan setiap huruf.
  • maka Anda menempatkan huruf-huruf secara berurutan dari yang paling besar hingga yang paling kecil.
  • kemudian Anda mengambil daftar itu dan mengubahnya menjadi encoder / decoder untuk teks tersebut.
  • kemudian mengkodekan teks dengan sandi itu.

Sulit dimengerti? Lihat contoh ini:

Contoh:

Masukkan teks:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Tidak ada yang tersedia di situs ini untuk mendapatkan informasi lebih lanjut. Anda hanya perlu menambahkan beberapa faucibus, seperti portingitor. Pellentesque atau pharetra nisl. Vestibulum congue ultrices magna a fringilla. Portirator yang cepat, dan kontrol tristique yang berisiko, orci lorem accumsan nisi, scelerisque viverra turpis metus sit amet sapien. Bersama-sama dengan turpis, tidak ada lobortis dui blandit nec. Vestibulum dan semua komoditas komoditi tidak tersedia. Nulla cursus urna sem, at tincidunt sem molestie vel. Tidak ada foto yang tersedia untuk bibendum berwarna, lebih baik dari sekarang. Dengan asumsi, Anda dapat memilih. Phasellus lobortis mewarnai 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. Lebih dari itu, semua harus tersedia di ipsum.

Konversikan ke huruf kecil.

Hitungan Char (per huruf. Spasi dan tanda baca diabaikan):

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

Jumlah char yang dipesan:

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

Kemudian buat tabel pencarian menggunakan daftar asli dan diurutkan:

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

Kamus 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'}

Dan sekarang menyandikan teks asli dengan tabel pencarian ini:

'Lvgld rqfjd uvmvg dari edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl dari flu lprd. Menambah ejshvg ojfhv bjrf ured tejsrijf, lj tgrpnrmme lfh qvghhrhvg. Tolong tunjukkan. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frl edlh fe 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. Tlp tlpnrmme tlp lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Llu qglhrjd lfh, klm fslmlgrfbjl prfm Meflmmjf 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, tolong, tolong, buka, lewati, lj, rjfjd. '

Saya suka python!

Aturan:

  • Program Anda akan menerima string dan output.
  • Ubah semua input menjadi huruf kecil sebelum melakukan apa pun
  • Saya tidak peduli bagaimana Anda melakukan pengurutan daftar, tetapi hanya menghitung huruf kecil
  • Poin bonus (-30) untuk membuat dekripsi (tidak menyalin daftar dekripsi, lakukan dari awal
  • Ini adalah , jadi kode terpendek menang!
  • Selamat bersenang-senang!
Dokter
sumber
Berapa poin untuk seorang decryptor?
Trauma Digital
Ini adalah tantangan yang menyenangkan, tetapi metode enkripsi di sini akan membuat cryptographer menangis. Tidak hanya merupakan cipher subtitusi tunggal, tetapi ia memiliki keberanian untuk memperkenalkan bias yang dapat dikenali dan dapat dieksploitasi: semakin umum huruf ciphertext dalam penggunaan bahasa yang disandikan, semakin besar kemungkinan plaintext berada di dekat awal alfabet. Itu Caesar-Caesar. ;-)
Jonathan Van Matre
@ TheDoctor ide bagus, tetapi Anda telah membuat satu kesalahan kecil ... teks yang diacak harus dimulai dengan masing-masing huruf yang diacak sesuai dengan algoritma Anda! :) Kalimat pertama dimulai dengan M sekarang, kalimat kedua dengan P dan seterusnya ...
WallyWest
@DigitalTrauma - katakanlah 30 poin untuk decryptor
TheDoctor
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch? ITU TIDAK MUNGKIN! Anda perlu memiliki kunci ("daftar dekripsi" alias "tabel pencarian") Anda untuk dapat melakukannya. Hanya dengan mengambil ciphertext dan mengharapkan siapa pun untuk memberikan decryptor yang mengubahnya kembali menjadi plaintext tanpa menggunakan kunci apa pun adalah seolah-olah Anda meminta kami untuk mengirim pertanyaan ke StackOverflow tanpa mengetik huruf atau angka. Teori informasi sudah memberi tahu kami bahwa Anda tidak dapat memperoleh informasi entah dari mana ... sehingga cipher substitusi Anda memerlukan tabel pencarian (alias kunci).
e-sushi

Jawaban:

3

GolfScript, 39 karakter

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

Versi online untuk pengujian. Perhatikan bahwa pengurutan tidak ditentukan jika beberapa karakter memiliki jumlah yang sama dalam string input.

Contoh output

Lvgld rqfjd uvmvg dari edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl dari flu lprd. Menambah 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 frl edlh fe 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. Tlp tlpnrmme tlp lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Lepaskan dari awal, wlm fslmlgrfbjl prfm. Meflmmjf 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, tolong, plbjl, wlm, ephl, qjmwrpeg, dvmmrf, lj rp rqfjd.

Howard
sumber
Darn golfscript! selalu menang!
TheDoctor
3

Bash / coreutils, 91 karakter

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

Simpan sebagai cipher.sh, chmod + x dan jalankan:

$ ./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.
$ 
Trauma Digital
sumber
2

Rubi, 104 92 91 karakter

Menyimpan beberapa karakter berkat @Chron

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

Versi Online di sini. Penyortiran karakter dengan jumlah yang sama tidak didefinisikan, sebagaimana disebutkan dalam jawaban lain. Dengan input "asdf", setiap jawaban memiliki output lain sejauh ini.

Dengan kata lain: semua jawaban memiliki perilaku yang sama (dengan demikian mewakili pengodean yang dapat didekodekan) ketika input berisi seluruh alfabet dengan setiap huruf memiliki hitungan unik.

David Herrmann
sumber
Beberapa perbaikan kecil: ("a".."z").to_abisa [*?a..?z], m.joinbisa m*''dan def f(s)...endbisaf=->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 ]]

Dengan asumsi tadalah teks Lorem ipsum.

f[t]

"Flu Lvgld rqfjd uvmvg FRH edlh, svpflshlhjg eurqrfsrpn lmrh.Njps ujr eh prfr ljrfdvu qlmmlphlfbjl es flu lprd.Njmmed ejshvg ojfhv bjrf ured 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 ured hjgqrf, pls mvivghrf ujr imepurh pls.Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp pls pVP vlmrh.Njmme sjgfjf jgpe Field, eh hrpsrujph Field 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 mohon plbjl vlm ephl qjmvrpeg dvmmrf lj rp rqfjd. "

Aturan penggantian yang dihasilkan oleh Thread…-> ladalah:

{"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
sumber
1

K, 43

{x^(b!b^26$>#:'=a@&(a:_x)in b:"c"$97+!26)x}
tmartin
sumber
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);}}}

Tidak terkompresi.

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
sumber
Jangan sertakan string input dalam hitungan karakter Anda
TheDoctor
Apakah Anda menjalankan ini? Output: e93i89s71u65l61t59n56a49r47o37c34m31d22p20v15q12b11g10f9h3j1k0w0x0y0z0. Dan itu tidak mendekati tantangan.
RobIII
0

PHP, 151

(dengan pengaturan 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))));

Ini mengharapkan teks sebagai argumen pertama untuk skrip. Seperti itu:

php cypher.php "Lorem ipsum [...]"
Dabbler yang Layak
sumber
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="")

Keluaran (berdasarkan contoh dalam pertanyaan):

Lvgld rqfjd uvmvg dari edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl dari flu lprd. Menambah ejshvg ojfhv bjrf ured tejsrijf, lj tgrpnrmme lfh qvghhrhvg. Tolong tunjukkan. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frl edlh fe 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. Tlp tlpnrmme tlp lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Llu qglhrjd lfh, klm fslmlgrfbjl prfm Meflmmjf 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, mohon plmjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd.

Sven Hohenstein
sumber
0

Smalltalk, 138

masukan dalam s:

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

dekoder adalah:

s copyTransliterating:m to:i

tetapi karena (jika saya mengerti dengan benar) saya mungkin tidak menggunakan kembali "i" dan "m", saya akan bermain golf tanpa itu. Kode di atas memiliki dua CR tambahan yang dimasukkan untuk dibaca, yang tidak terhitung dalam hitungan char.

blabla999
sumber
0

Clojure, 135

(Dengan asumsi teks input terkandung dalam 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
sumber
0

Python 2.7 (147)

Bukan kode terpendek sama sekali tetapi sebagai Python belum diwakili dan seperti yang saya lihat "Saya suka python!" dalam pengaturan masalah, ini dia,

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])

Mengharapkan string input dilewatkan melalui baris perintah. (jumlah karakter dikurangi menjadi 122 jika string input secara ajaib dimasukkan ke dalam variabel "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 dari edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl dari flu lprd. Menambah ejshvg ojfhv bjrf ured tejsrijf, lj tgrpnrmme lfh qvghhrhvg. Tolong tunjukkan. Vlfhrijmjd svpnjl jmhgrslf denpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frl edlh fe 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. Tlp tlpnrmme tlp lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Llu qglhrjd lfh, klm fslmlgrfbjl prfm Meflmmjf 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, mohon plmjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd.

camelthemammel
sumber
Yap, saya melakukan semua itu dalam 20 baris python, tetapi jauh lebih lama dari Anda
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

.. masukan dilewati ..

Lvgld rqfjd uvmvg dari edlh, svpflshlhjg eurqrfsrpn lmrh. Njps flu ujr eh prfr lj rfdvu qlmmlphlfbjl dari flu lprd. Menentukan ejshvg ojfhv bjrf ured tejsrijf, lj tgrpn rmme lfh qvghhrhvg. Tolong tunjukkan. Vlfhrijmjd svpnjl jmhgrslf d enpe e tgrpnrmme. Qjrfbjl qvghhrhvg, grfjf fjfsrqrh qlmmlphlfbjl hgrfhrbjl, vgsr mvgld essjdfep prfr, fslmlgrfbjl krklgge hjgqrf dlhjf frl edlh fe Fjfsl te srmrfrf ured hjgqrf, pls mvivghrf ujr imepurh pls. Terima kasih, mohon jjpe jh mesjf s vddvuv fvmmrsrhjurp pls pvp klmrh. Njmme sjgfjf jgpe fld, eh hrpsrujph fld dvmlf hrl klm. Tlp tlpnrmme tlp lj uvmvg irilpujd, qvfjlgl resjmrf pjps mesrpre. Llu qglhrjd lfh, klm fslmlgrfbjl prfm Meflmmjf 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, mohon plmjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd.

PS Apakah itu lelucon, tentang menguraikan? Atau haruskah saya mengklaim 30 bonus karena membuktikannya tidak mungkin? Apakah aabdiuraikan ke aabatau bba? Atau babaca, apakah itu cacabaatau ababcbdalam bahasa aslinya, atau babacasendiri, secara harfiah?

pengguna2846289
sumber
0

C # - 393 byte

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;}

Versi diperpanjang dari jawaban @ PauloHDSousa ...

Rajesh
sumber
Mengapa Anda memiliki banyak ruang ekstra dalam jawabannya?
Qwertiy