Bu zorluğun amacı, giriş metnini almak, aşağıdaki yöntemi kullanarak şifrelemek ve sonucu döndürmek için en kısa işlevi / programı yazmaktır.
Örnek olarak, dizeyi kullanacağım hello world
.
İlk önce giriş metnini alın.
hello world
İkinci olarak , dizgeyi üçlü hale getirin (taban 3). Bu anahtarı kullan:
a = 000
b = 001
c = 002
d = 010
e = 011
f = 012
g = 020
...
w = 211
x = 212
y = 220
z = 221
[space] = 222
Bu tuş ile, hello world
olur 021011102102112222211112122102010
aşağıda görüldüğü gibi.
h e l l o w o r l d
021 011 102 102 112 222 211 112 122 102 010
Üçüncü olarak , ilk rakamı sonuna kadar hareket ettirin.
021011102102112222211112122102010
becomes
210111021021122222111121221020100
Dördüncü olarak , aynı anahtarı kullanarak numarayı tekrar bir dizgeye dönüştürün.
210 111 021 021 122 222 111 121 221 020 100
v n h h r n q z g j
Son olarak , şifrelenmiş metni döndür.
vnhhr nqzgj
İşte bazı örnek metinler ve bunların çıktıları:
the turtle ==> dvo fh ego
python ==> uudwqn
code golf ==> hpjoytqgp
Bu kod golf olduğundan, bayt cinsinden en kısa giriş kazanır. Bazı karakterlerin küçük harf veya boşluk olmaması durumunda hatalara izin verilir. Bu benim ilk zorluğum, bu yüzden herhangi bir öneri yardımcı olmaktan daha fazlası olacaktır.
İyi şanslar!
Liderler Sıralaması:
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
artan güçler kullanarak karakterleri büyük bir tamsayıya ( ) paketlemekti 27
. Bir basamakla yer değiştirme, daha sonra bu büyük tamsayı ile çarpmaya eşdeğer olacaktır 3
ve ilk basamağın diğer uçta eklenmesi basit bir ekleme olacaktır. Ancak, son "taşınmayı" (belki de bir mod
operasyon aracılığıyla ) atmak gibi komplikasyonlar var ve birkaç byte ile çalışmasını sağlayamadım