文字を数え、それらを暗号に変えます


9

問題:

次のことを行うプログラムを作成する必要があります。

  • 小文字のテキストの大きな文字列を受け取り、各文字の出現をすべてカウントします。
  • 次に、文字を出現回数の多い順に並べます。
  • 次に、そのリストを取得して、テキストのエンコーダー/デコーダーに変換します。
  • 次に、その暗号でテキストをエンコードします。

理解しにくい?この例を見てください:

例:

入力テキスト:

ロレム・イプサム・ドーラーは座り心地がよく、僧侶は外交的エリートです。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)(解読リストをコピーせず、ゼロから実行)
  • これはので、最短のコードが勝ちます!
  • 楽しんで!

解読プログラムのポイントはいくつですか?
— Digital Trauma

これは楽しい挑戦ですが、ここでの暗号化方法は暗号学者を泣かせます。単一置換暗号であるだけでなく、認識可能で悪用可能なバイアスを導入するという大胆さがあります。暗号化された言語の使用において暗号文の文字が一般的であるほど、平文がアルファベットの最初の方にある可能性が高くなります。それはシーザーのシーザーです。;-)
— Jonathan Van Matre 14

@TheDoctor素晴らしいアイデアですが、少しエラーが発生しました...暗号化されたテキストは、アルゴリズムに従ってそれぞれの暗号化された文字で始まる必要があります!:)最初の文は今Mで始まり、2番目の文はPで始まり、
— 以下同様に続き

@DigitalTrauma-解読者に30ポイントとしましょう
— TheDoctor 2014

Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch?それ無理!それを行うには、キー(「復号化リスト」または「ルックアップテーブル」)が必要です。暗号文を取得し、キーを使用せずに暗号文を平文に戻す復号器を提供することを誰かに期待するのは、まるで文字や数字を入力せずにStackOverflowに質問を投稿するように要求するのと同じです。情報理論では、どこからでも情報を取得することはできないと既に述べています...したがって、代替暗号にはそのルックアップテーブル(別名キー)が必要です。
— e-sushi

回答:


3

GolfScript、39文字

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

テスト用のオンラインバージョン。入力文字列で複数の文字が同じ数の場合、並べ替えは定義されないことに注意してください。

出力例

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 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 ure 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。


くそーゴルフスクリプト!いつも勝ちます!
— TheDoctor 2014

3

Bash / coreutils、91文字

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

として保存しcipher.sh、chmod + xで実行します。

$ ./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.
$ 

2

ルビー、 104 92 91文字

@Chronのおかげでかなりの数の文字を保存しました

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

オンライン版はこちら。別の回答で述べられているように、同じ数の文字のソートは定義されていません。入力 "asdf"を使用すると、各回答にはこれまでに別の出力があります。

つまり、入力にアルファベット全体が含まれ、各文字に一意のカウントがある場合、すべての回答は同じ動作をします(したがって、デコード可能なエンコーディングを表します)。


いくつかの小さな改善:("a".."z").to_aできる[*?a..?z]、m.joinできるm*''、def f(s)...endできるf=->s{...}
— ポールプレスティッジ

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

tLorem ipsumテキストが想定されています。

f[t]

「Lvgld rqfjd uvmvg FRH edlh、svpflshlhjg eurqrfsrpn lmrh.NjpsインフルエンザUJRえっprfr ljrfdvu qlmmlphlfbjl ESインフルエンザlprd.Njmmed ejshvg ojfhv bjrf ured tejsrijf、LJ tgrpnrmme LFH qvghhrhvg.Plmmlphlfbjl VLM qaeglhge prfm.Vlfhrijmjd svpnjl jmhgrslf denpe電子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 FLD、えっ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。」

によって生成された置換ルールThread…-> lは次のとおりです。

{"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"}



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

非圧縮。

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

文字列に入力文字列を含めないでください
— TheDoctor

あなたもこれを実行しましたか?出力:e93i89s71u65l61t59n56a49r47o37c34m31d22p20v15q12b11g10f9h3j1k0w0x0y0z0。そして、それは挑戦に近づくことさえありません。
— RobIII 2014

0

PHP、151

(設定あり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))));

これは、スクリプトの最初の引数としてテキストを想定しています。そのようです:

php cypher.php "Lorem ipsum [...]"

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="")

出力(問題の例に基づく):

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。


0

Smalltalk、138

sに入力:

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

デコーダは:

s copyTransliterating:m to:i

(正しく理解していれば) "i"と "m"は再利用できないので、それなしでゴルフをします。上記のコードには、読みやすくするために追加の2つのCRが挿入されていますが、これらは文字カウントには含まれていません。


0

Clojure、135

(入力テキストが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)))

0

Python 2.7(147)

最短のコードではありませんが、Pythonはまだ表現されておらず、「Pythonが大好きです!」問題の設定で、私はここに行きます、

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

コマンドラインを介して渡される入力文字列が必要です。(入力文字列が魔法のように変数 "s"に挿入された場合、文字数は122に減ります)

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

アウトプット

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。


うん、私は20行のpythonでそれをすべてやったが、それはあなたのものよりずっと長い
— 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

..入力がスキップされました..

Lvgld rqfjd uvmvg frh edlh、svpflshlhjg eurqrfsrpn lmrh。Njps flu ujr eh prfr lj rfdvu qlmmlphlfbjl es flu lprd。Njmmed ejshvg ojfhv bjrf ure 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 ure 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それは解読についての冗談でしたか?それとも不可能を証明するために30のボーナスを請求する必要がありますか?されaabに解読aabかbba?またはbabaca、それは文字通りでしたか、それともオリジナルでしたcacabaかababcb、それbabaca自体でしたか


0

C#– 393バイト

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

@PauloHDSousaの回答の拡張バージョン…


なぜあなたは答えに多くの余分なスペースがあるのですか?
— Qwertiy 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.