이 과제의 목표는 입력 텍스트를 가져 와서 가장 짧은 함수 / 프로그램을 작성하여 아래 방법을 사용하여 암호화 한 다음 결과를 반환하는 것입니다.
예를 들어 문자열을 사용합니다 hello world
.
먼저 입력 텍스트를 가져옵니다.
hello world
둘째 , 문자열을 3 진 (기본 3)으로 변환하십시오. 이 키를 사용하십시오 :
a = 000
b = 001
c = 002
d = 010
e = 011
f = 012
g = 020
...
w = 211
x = 212
y = 220
z = 221
[space] = 222
이 키를 사용하면 아래와 같이 hello world
가 021011102102112222211112122102010
됩니다.
h e l l o w o r l d
021 011 102 102 112 222 211 112 122 102 010
셋째 , 첫 번째 숫자를 끝으로 이동하십시오.
021011102102112222211112122102010
becomes
210111021021122222111121221020100
넷째 , 같은 키를 사용하여 숫자를 다시 문자열로 변환하십시오.
210 111 021 021 122 222 111 121 221 020 100
v n h h r n q z g j
마지막으로 암호화 된 텍스트를 반환합니다.
vnhhr nqzgj
다음은 몇 가지 샘플 텍스트와 출력입니다.
the turtle ==> dvo fh ego
python ==> uudwqn
code golf ==> hpjoytqgp
이것이 코드 골프이기 때문에 바이트 단위 의 가장 짧은 항목이 이깁니다. 일부 문자가 소문자 나 공백이 아닌 경우 오류가 허용됩니다. 이것이 나의 첫 번째 도전이므로, 어떤 제안이라도 도움이 될 것입니다.
행운을 빕니다!
리더 보드 :
var QUESTION_ID=54643;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
uint64
증가하는 힘을 사용하여 문자를 큰 정수 ( ) 로 묶는 것이 었습니다 27
. 한 자릿수의 변위는이 큰 정수에을 곱하는 것과 동일 3
하며 다른 쪽 끝의 첫 번째 자릿수의 도입은 단순히 추가입니다. 그러나 마지막 "운반"을 버리는 것 (어쩌면 mod
작업을 통해 ) 과 같은 합병증이 있으며 몇 바이트로 작동하지 못했습니다.