一千萬個為什麽

搜索

計算字符數,將它們變成密碼

問題:</強>

您必須創建一個執行以下操作的程序:

  • 獲取一大串小寫文本,並計算每個字母的所有匹配項。
  • 然後你按照從最大到最小的順序排列字母。
  • 然後你把那個列表變成文本的編碼器/解碼器。
  • 然後使用該密碼對文本進行編碼。

很難明白?看這個例子:

示例:</強>

輸入文本:

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。整數scelerisque tempor tellus,viverra varius neque mattis in。整數porta vestibulum nisl,et feugiat tortor tincidunt vel。 Aenean dignissim eleifend faucibus。 Morbi nec neque vel ante pulvinar mollis eu in ipsum。

轉換為小寫。

字符數(每個字母。空格和標點符號被忽略):

[('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 ured 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 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。 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。'

我喜歡python!

規則:</強>

  • Your program will accept a string and output one.
  • Convert all input to lowercase before doing anything
  • I don't care how you do the list sorting, but only count lowercase letters
  • Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch
  • This is , so the shortest code wins!
  • Have fun!

最佳答案

GolfScript,39個字符

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

Online version for testing. Note that the sorting is not defined if multiple characters have the same count in the input string.

示例輸出

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 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 ured   hjgqrf,請mvivghrf ujr imepurh請。 Vlfhrijmjd es jgpe jh mesjf   svddvuv fvmmrsrhjurp請pvp wlmrh。 Njmme sjgfjf jgpe fld,呃   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。

轉載註明原文: 計算字符數,將它們變成密碼