Vấn đề:
Bạn phải tạo một chương trình thực hiện như sau:
- lấy một chuỗi lớn văn bản chữ thường và đếm tất cả các lần xuất hiện của mỗi chữ cái.
- sau đó bạn đặt các chữ cái theo thứ tự từ lớn nhất đến ít nhất.
- sau đó bạn lấy danh sách đó và biến nó thành một bộ mã hóa / giải mã cho văn bản.
- sau đó mã hóa văn bản với mật mã đó.
Khó hiểu? Xem ví dụ này:
Thí dụ:
Nhập ký tự:
Lorem ipsum dolor ngồi amet, consitetur adipiscing elit. Nunc sed dui tại nisi euismod pellentesque ac sed enim. Nullam auctor justo quis diam faucibus, eu fringilla est porttitor. Pellentesque vel pharetra nisl. Vestibulum congue ultrices magna một fringilla. Quisque porttitor, risus suscipit pellentesque tristique, orci lorem accumsan nisi, scelerisque viverra turpis metus sit amet sapien. Fusce preferisis diam turpis, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus Vendo sollicitudin nec non velit. Nulla cursus urna sem, tại 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 TIME Tellus, viverra varius neque mattis in. Integer porta vestibulum nisl, et feugiat traor tincidunt vel. Aenean dignissim eleifend faucibus. Morbi nec neque vel ante pulvinar mollis eu ở ipsum.
Chuyển đổi thành chữ thường.
Số đếm Char (mỗi chữ cái. Dấu cách và dấu chấm câu bị bỏ qua):
[('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)]
Số lượng char đặt hàng:
[('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)]
Sau đó tạo bảng tra cứu bằng danh sách gốc và được sắp xếp:
abcdefghijklmnopqrstuvwxyz
||||||||||||||||||||||||||
eisultnarocmdpvqbgfhjkwxyz
Từ điển 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'}
Và bây giờ mã hóa văn bản gốc bằng bảng tra cứu này:
'Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. Njps cúm ujr eh prfr ljrfdvu qlmmlphlfbjl es cúm 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, vssr mvgld essjdfep prfr Fjfsl tesrmrfrf ured hjgqrf, xin mvivghrf ujr imepurh xin vui lòng. Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp xin 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 xin plbjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd. '
Tôi yêu con trăn!
Quy tắc:
- Chương trình của bạn sẽ chấp nhận một chuỗi và đầu ra một chuỗi.
- Chuyển đổi tất cả đầu vào thành chữ thường trước khi làm bất cứ điều gì
- Tôi không quan tâm đến cách bạn sắp xếp danh sách, nhưng chỉ đếm các chữ cái viết thường
- Điểm thưởng (-30) để tạo bộ giải mã (không sao chép danh sách giải mã, hãy thực hiện từ đầu
- Đây là môn đánh gôn , vì vậy đoạn mã ngắn nhất sẽ thắng!
- Chúc vui vẻ!
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch? KHÔNG THỂ NÀO! Bạn sẽ cần phải có khóa (danh sách giải mã trên máy tính của bạn, hay còn gọi là bảng tra cứu trên mạng) để có thể làm điều đó. Chỉ cần lấy một bản mã và mong đợi bất kỳ ai cung cấp một bộ giải mã biến nó trở lại thành bản rõ mà không sử dụng bất kỳ khóa nào giống như bạn đang yêu cầu chúng tôi gửi câu hỏi lên StackOverflow mà không cần gõ bất kỳ chữ cái hoặc số nào. Lý thuyết thông tin đã cho chúng tôi biết rằng bạn không thể lấy thông tin từ nơi nào vì vậy mật mã thay thế của bạn cần bảng tra cứu đó (còn gọi là khóa).