問題:
次のことを行うプログラムを作成する必要があります。
- 小文字のテキストの大きな文字列を受け取り、各文字の出現をすべてカウントします。
- 次に、文字を出現回数の多い順に並べます。
- 次に、そのリストを取得して、テキストのエンコーダー/デコーダーに変換します。
- 次に、その暗号でテキストをエンコードします。
理解しにくい?この例を見てください:
例:
入力テキスト:
ロレム・イプサム・ドーラーは座り心地がよく、僧侶は外交的エリートです。Nunc sed dui at nisi euismod pellentesque ac sed enim。Nullam auctor justo quis diam faucibus、eu fringilla est porttitor。Pellentesque vel pharetra nisl。前庭は、ウルトリス・マグナとフランギラを争う。クィスクポーティター、リサスsuscipit pellentesque tristique、orci lorem accumsan nisi、sclerisque viverra turpis metus sit amet sapien。Fusce facilisis diam turpis、nec lobortis dui blandit nec。前庭ac urna ut lacus commodo sollicitudin nec non velit。Nulla cursus urna sem、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、イプサム。
小文字に変換します。
文字数(文字ごと。スペースと句読点は無視されます):
[( '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)]
順序付けされた文字数:
[( '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)]
次に、元のリストとソートされたリストを使用してルックアップテーブルを作成します。
abcdefghijklmnopqrstuvwxyz
||||||||||||||||||||||||||
eisultnarocmdpvqbgfhjkwxyz
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'}
そして今、このルックアップテーブルで元のテキストをエンコードします。
'Lvgld rqfjd uvmvg frh edlh、svpflshlhjg eurqrfsrpn lmrh。Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl es flu lprd。Njmmed ejshvg ojfhv bjrf ure 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 ure 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。 '
私はパイソンが大好きです!
ルール:
- プログラムは文字列を受け入れ、出力します。
- 何かを行う前にすべての入力を小文字に変換します
- リストの並べ替え方法は気にしませんが、小文字だけを数えます
- デクリプターを作成するためのボーナスポイント(-30)(解読リストをコピーせず、ゼロから実行)
- これはコードゴルフなので、最短のコードが勝ちます!
- 楽しんで!
Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch?それ無理!それを行うには、キー(「復号化リスト」または「ルックアップテーブル」)が必要です。暗号文を取得し、キーを使用せずに暗号文を平文に戻す復号器を提供することを誰かに期待するのは、まるで文字や数字を入力せずにStackOverflowに質問を投稿するように要求するのと同じです。情報理論では、どこからでも情報を取得することはできないと既に述べています...したがって、代替暗号にはそのルックアップテーブル(別名キー)が必要です。