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 kode-golf, jadi kode terpendek menang!
- Selamat bersenang-senang!
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).