Mục tiêu của thử thách này là viết hàm / chương trình ngắn nhất để lấy văn bản đầu vào, mã hóa nó bằng phương thức bên dưới và trả về kết quả.
Ví dụ, tôi sẽ sử dụng chuỗi hello world
.
Đầu tiên , có được văn bản đầu vào.
hello world
Thứ hai , chuyển đổi chuỗi thành ternary (cơ sở 3). Sử dụng khóa này:
a = 000
b = 001
c = 002
d = 010
e = 011
f = 012
g = 020
...
w = 211
x = 212
y = 220
z = 221
[space] = 222
Với chìa khóa này, hello world
trở thành 021011102102112222211112122102010
, như được thấy dưới đây.
h e l l o w o r l d
021 011 102 102 112 222 211 112 122 102 010
Thứ ba , di chuyển chữ số đầu tiên đến cuối.
021011102102112222211112122102010
becomes
210111021021122222111121221020100
Thứ tư , chuyển đổi số trở lại thành một chuỗi bằng cùng một khóa.
210 111 021 021 122 222 111 121 221 020 100
v n h h r n q z g j
Cuối cùng , trả lại văn bản được mã hóa.
vnhhr nqzgj
Dưới đây là một số văn bản mẫu và đầu ra của chúng:
the turtle ==> dvo fh ego
python ==> uudwqn
code golf ==> hpjoytqgp
Vì đây là mã golf, mục nhập ngắn nhất trong byte sẽ thắng. Lỗi được phép nếu một số ký tự không phải là chữ thường hoặc dấu cách. Đây là thử thách đầu tiên của tôi, vì vậy mọi đề xuất sẽ hữu ích hơn.
Chúc may mắn!
Bảng xếp hạng:
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
) bằng cách tăng sức mạnh của 27
. Sự dịch chuyển theo một chữ số sau đó sẽ tương đương với nhân số nguyên lớn này với 3
, và việc giới thiệu chữ số đầu tiên ở đầu kia chỉ đơn giản là một phép cộng. Nhưng có những điều phức tạp, chẳng hạn như loại bỏ "lần mang" cuối cùng (có lẽ thông qua một mod
thao tác) và tôi không thể làm cho nó hoạt động với vài byte