문제:
다음을 수행하는 프로그램을 만들어야합니다.
- 큰 소문자 텍스트 문자열을 사용하고 각 문자의 모든 발생 횟수를 계산합니다.
- 그런 다음 가장 큰 것부터 가장 적은 것까지 순서대로 문자를 넣습니다.
- 그런 다음 해당 목록을 가져와 텍스트의 인코더 / 디코더로 바꿉니다.
- 그런 다음 해당 암호로 텍스트를 인코딩합니다.
이해하기 어려운가요? 이 예제를보십시오 :
예:
입력 텍스트 :
Lorem ipsum의 dolor는 amet, conditetur adipiscing elit에 앉습니다. nisi euismod pellentesque acimed enim의 Nunc sed dui. Nullam auctor justo quis diam faucibus, eu fringilla est porttitor입니다. Pellentesque vel pharetra nisl. Vestibulum congue ultrices 마그나는 프린지. Quisque porttitor, risus suscipit pellentesque tristique, orci lorem accumsan nisi, scelerisque viverra turpis metus는 아마 사파이어를 앉습니다. Fusce facilisis diam turpis, nec lobortis dui blandit nec. Vestibulum ac urna ut lacus commodo sollicitudin nec 비 velit. Tinlladunt sem molestie vel에서 Nulla cursus urna sem. 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에 있습니다. 정수 porta vestibulum nisl, et feugiat tortor tincidunt vel. Aenean dignissim eleifend faucibus. ipsum에있는 Morbi nec nevel 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
파이썬 사전 :
{'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 독감 UJR EH PRFR ljrfdvu qlmmlphlfbjl es 독감 lprd. jmshej ojshv 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 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 EPLl Lj Uvmvg Irilpujd, qvfjlgl resjmrf pjps mesrpre. 솔 류스 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 pls plbjl klm ephl qjmkrpeg dvmmrf lj rp rqfjd. ‘
나는 파이썬을 좋아한다!
규칙 :
- 프로그램은 문자열을 받아 출력합니다.
- 무언가를하기 전에 모든 입력을 소문자로 변환
- 나는 당신이리스트 정렬을 어떻게하는지 신경 쓰지 않고 소문자 만 셉니다
- 암호 해독기를 만들기위한 보너스 포인트 (-30) (암호 해독 목록을 복사하지 않고 처음부터 다시 수행)
- 이것은 코드 골프가장 짧은 코드가 승리합니다!
- 즐기세요!
답변
GolfScript, 39 자
:I{97,26,{97+}%{[.32-]I\-,}$+'{|}~'+=}%
테스트를위한 온라인 버전 . 입력 문자열에서 여러 문자의 수가 같은 경우 정렬이 정의되지 않습니다.
출력 예
Lvgld rqfjd uvmvg frh edlh, svpflshlhjg eurqrfsrpn lmrh. NJPS 독감 UJR EH PRFR ljrfdvu qlmmlphlfbjl es 독감 lprd. jmshej ojshv 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 edlh feqrlp. Fjfsl tesrmrfrf ured 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 EPLl Lj Uvmvg Irilpujd, qvfjlgl resjmrf pjps mesrpre. 솔 류스 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. MVGIR pls plbjl wlm ephl qjmwrpeg dvmmrf lj rp rqfjd.
답변
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.
$
답변
루비, 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”를 사용하면 각 답변에는 지금까지 다른 출력이 있습니다.
즉, 입력에 각 문자가 고유 한 수를 갖는 전체 알파벳을 포함하는 경우 모든 답변의 동작이 동일합니다 (따라서 디코딩 가능한 인코딩을 나타냄).
답변
매스 매 티카 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, 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 alpuglgvhlflghlggrghlflghlghlggrghlflghlggrghlqlghlggrghlggrggrghlggrggrghlghlggrghlfgrghlflghlghlggrghlfgrghlflghlggrggrghlghlqgrj hlgjhllh 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”}
답변
K, 43
{x^(b!b^26$>#:'=a@&(a:_x)in b:"c"$97+!26)x}
답변
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);
}
}
}
답변
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 [...]"