นับตัวอักษรเปลี่ยนเป็นตัวเลข


9

ปัญหา:

คุณต้องสร้างโปรแกรมที่ทำสิ่งต่อไปนี้:

  • ใช้สตริงตัวพิมพ์เล็กจำนวนมากและนับจำนวนการเกิดทั้งหมดของตัวอักษรแต่ละตัว
  • จากนั้นคุณใส่ตัวอักษรตามลำดับจากมากไปน้อย
  • จากนั้นคุณนำรายการนั้นและเปลี่ยนเป็นตัวเข้ารหัส / ตัวถอดรหัสสำหรับข้อความ
  • จากนั้นเข้ารหัสข้อความด้วยตัวเลขนั้น

ยากที่จะเข้าใจ? ดูตัวอย่างนี้:

ตัวอย่าง:

ข้อความที่ป้อน:

Lorem ipsum dolor sit amet, consipetur adipiscing elit. Nunc sed dui at nisi euismod pellentesque ac sed enim. ไม่มีใครรู้ว่าเพียงแค่คุณเป็นคนดี, eu fringilla เป็น porttitor. Pellentesque vel pharetra nisl Vestgulum สวมบทบาท ultrices magna a fringilla นักเขียนที่น่าสนใจ, ผู้ที่ชื่นชอบการถ่ายภาพฉากหลัง, สิ่งอำนวยความสะดวกอื่น ๆ , scelerisque viverra turpis metus นั่ง amet sapien. สิ่งอำนวยความสะดวกที่ได้รับการสนับสนุน เสื้อของคุณจะถูกส่งไปยังสินค้าโภคภัณฑ์ที่ไม่เหมาะสม Nulla cursus urna sem, ที่ tincidunt sem molestie vel. Nullam fringilla ante eu dolor bibendum, ตำแหน่งที่ชัดเจนของ lacinia อยู่ข้างล่างนี้, เร็ว ๆ นี้. Phasellus lobortis dolor sodales sapien mollis hendrerit จำนวนเงินที่เก็บชั่วคราว, ค่าที่แตกต่างกันในทุกด้านของจำนวนเงินทั้งหมดของคุณ, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus ไม่ทราบว่าใครเป็นคนแรกหรือน้อยกว่าใครใน ipsum.

แปลงเป็นตัวพิมพ์เล็ก

จำนวน Char (ตัวอักษรต่อช่องว่างและเครื่องหมายวรรคตอนถูกละเว้น):

[('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 และไข้หวัดใหญ่ lprd Njmmed ejshvg ojfhv bjrf ถูก 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 edh Fjfsl tesrmrfrf หาย hjgqrf, กรุณา mvivghrf ujr imepurh กรุณา Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp กรุณา pvp klmrh ไม่ระบุ 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 เพิ่ม urnprffrd lmlrtlpu tejsrijf Mvgir กรุณา plbjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd '

ฉันรักหลาม!

กฎ:

  • โปรแกรมของคุณจะยอมรับสตริงและส่งออกหนึ่ง
  • แปลงอินพุตทั้งหมดเป็นตัวพิมพ์เล็กก่อนทำอะไรก็ได้
  • ฉันไม่สนใจว่าคุณจะเรียงลำดับรายการอย่างไร แต่นับตัวอักษรพิมพ์เล็กเท่านั้น
  • คะแนนโบนัส (-30) สำหรับการทำ decryptor (ไม่มีการคัดลอกรายการถอดรหัสทำตั้งแต่เริ่มต้น
  • นี่คือ ดังนั้นรหัสที่สั้นที่สุดชนะ!
  • มีความสุข!

decryptor มีกี่คะแนน
Digital Trauma

นี่เป็นความท้าทายที่สนุก แต่วิธีการเข้ารหัสที่นี่จะทำให้ผู้เข้ารหัสลับร้องไห้ ไม่เพียง แต่จะเป็นตัวเลขแทนตัวเดียวเท่านั้น แต่ยังมีความกล้าที่จะแนะนำอคติที่เป็นที่รู้จักและใช้ประโยชน์ได้: ยิ่งอักษร ciphertext ทั่วไปใช้ภาษาที่เข้ารหัสมากเท่าไหร่ข้อความธรรมดาน่าจะอยู่ใกล้จุดเริ่มต้นของตัวอักษรมากขึ้น มันออกซีซาร์ของซีซาร์ ;-)
Jonathan Van Matre

@TheDoctor ความคิดที่ดี แต่คุณได้ทำผิดพลาดเล็กน้อย ... ข้อความที่เข้ารหัสควรเริ่มต้นด้วยตัวอักษรที่เข้ารหัสตามลำดับของอัลกอริทึมของคุณ! :) ประโยคแรกเริ่มต้นด้วย M ตอนนี้ประโยคที่สองกับ P และอื่น ๆ ...
WallyWest

@DigitalTrauma - สมมติว่ามี 30 คะแนนสำหรับตัวถอดรหัส
TheDoctor

Bonus points (-30) for making a decryptor (no copying the decryption list, do it from scratch? นั่นเป็นไปไม่ได้! คุณจะต้องมีคีย์ ("รายการถอดรหัส" ของคุณ "aka" ตารางค้นหา ") เพื่อให้สามารถทำเช่นนั้นได้ เพียงแค่ใช้ไซเฟอร์เท็กซ์และคาดหวังว่าทุกคนจะให้ตัวถอดรหัสที่แปลงกลับเป็นข้อความธรรมดาโดยไม่ต้องใช้คีย์ใด ๆ เหมือนกับว่าคุณกำลังขอให้เราโพสต์คำถามไปที่ 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 และไข้หวัดใหญ่ lprd Njmmed ejshvg ojfhv bjrf ถูก 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 edh Fjfsl tesrmrfrf หาย hjgqrf, กรุณา mvivghrf ujr imepurh กรุณา Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp กรุณา pvp wlmrh ไม่ระบุ 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 เพิ่ม urnprffrd lmlrtlpu tejsrijf ผู้เยี่ยมชม pls กรุณาติดต่อ wlm ephl qjmwrpeg dvmmrf lj rp rqfjd


Darn golfscript! มันชนะเสมอ!
TheDoctor

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.shchmod + x it และเรียกใช้:

$ ./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: ("a".."z").to_aสามารถ[*?a..?z], m.joinสามารถm*''และdef f(s)...endสามารถf=->s{...}
พอล Prestidge

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

สมมติว่าtเป็นข้อความ Lorem 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 กรุณา mvivghrf ujr imepurh pls.Vlfhrijmjd ES jgpe JH mesjf svddvuv fvmmrsrhjurp pls พีวีพี 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 ได้โปรด 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

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 และไข้หวัดใหญ่ lprd Njmmed ejshvg ojfhv bjrf ถูก 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 edh Fjfsl tesrmrfrf หาย hjgqrf, กรุณา mvivghrf ujr imepurh กรุณา Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp กรุณา pvp klmrh ไม่ระบุ 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 เพิ่ม urnprffrd lmlrtlpu tejsrijf ผู้เยี่ยมชมกรุณาใช้คำสั่ง klm ephl qjmkrpeg dvmmrf lj rp rqfjd


0

สมอลทอล์ค, 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" กลับมาใช้ใหม่ฉันจะเล่นกอล์ฟโดยไม่ใช้มัน โค้ดด้านบนมี 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 ยังไม่ได้แสดงและอย่างที่ฉันเห็น "I love 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])

คาดว่าสตริงการป้อนข้อมูลจะถูกส่งผ่านทางบรรทัดคำสั่ง (จำนวนตัวละครจะลดลงเป็น122หากใส่สายอักขระที่ใส่ลงในตัวแปร "s" อย่างน่าอัศจรรย์)

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

ouput

Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh Njps flu ujr eh prfr ljrfdvu qlmmlphlfbjl และไข้หวัดใหญ่ lprd Njmmed ejshvg ojfhv bjrf ถูก 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 edh Fjfsl tesrmrfrf หาย hjgqrf, กรุณา mvivghrf ujr imepurh กรุณา Vlfhrijmjd es jgpe jh mesjf svddvuv fvmmrsrhjurp กรุณา pvp klmrh ไม่ระบุ 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 เพิ่ม urnprffrd lmlrtlpu tejsrijf ผู้เยี่ยมชมกรุณาใช้คำสั่ง klm ephl qjmkrpeg dvmmrf lj rp rqfjd


ใช่ฉันทำทุกอย่างใน 20 บรรทัดของงูหลาม แต่มันยาวกว่าของคุณ
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 ไข้หวัดใหญ่ lprd Njmmed ejshvg ojfhv bjrf ured 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 edh Fjfsl เป็น hjgqrf สำหรับ srmrfrf, กรุณา mvivghrf ujr imepurh กรุณา Vlfhrijmjd es jgpe jh mesjf s vddvuv fvmmrsrhjurp กรุณา pvp klmrh ไม่ระบุ 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 เพิ่ม urprprrd lmlrtlpu tejsrijf ผู้เยี่ยมชมกรุณาใช้คำสั่ง klm ephl qjmkrpeg dvmmrf lj rp rqfjd

ปล. มันเป็นเรื่องตลกหรือเปล่าเกี่ยวกับการถอดรหัส? หรือฉันควรขอรับโบนัส 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.