Giriş
Anlaşılan uzaylılar da bizim kadar memleri severler. Şimdiye kadar karşılaştığımız her yabancı ırkın kendine has bir sürümü 2spooky4me
( aşağıdaki soruya bakın ) ve buna karşın, bir miktar değişiklikle eşdeğerdir. CUTE1f gezegeninin sakinleri çok fazla ürkütücü işleyemez, bu yüzden tercih ettikleri 1spooky2me
ürkütücü, iskelet memurları onları biraz korkutur, bu yüzden kullanma eğilimindedirler 9spooky11me
.
Meydan okuma
Anı çevirmek zor bir iştir, bu yüzden bu adamların hatıraya doğru erişmesine yardımcı olmak için evrensel bir meme çevirmeni yazmakla görevlendirildin. Programınız, bir meme ve farklı bir gezegenin sakinleri için uygun hale getirmek için o meme içindeki rakam dizilerine uygulanacak bir dönüşümü kabul edecektir.
Giriş
Programınız iki dize girişi alacak:
- Giriş mem (örneğin
2spooky4me
). Maçlar [a-zA-Z0-9]+
.
- Transformasyon (örn kendisine uygulanacak
+1
gitmek için, 2spooky4me
için 3spooky5me
). Maçlar [+\-*/^]\d+
(eğer kabul etmelidir +
, -
, *
, /
, ve ^
operatörler olarak, ne olursa olsun kendi dilinizde yerli temsilinin).
Çıktı
Programınız, giriş memesindeki rakam dizilerine verilen dönüşümle birlikte bir dizge çıktısı (standart çıktıya veya eşdeğeri basılmış) döndürmelidir. Olayların garip bir dönüşünde, şimdiye kadar karşılaşılan tüm ırkların kesirli olanlar yerine bütünleşik memeleri tercih ettiği, dolayısıyla bu dönüşümlerin tamsayı aritmetiği 1spooky1me /2
yapması gerektiği ortaya çıkmıştır (örneğin sonuçlanmalı 0spooky0me
).
Örnekler
Standart aritmetik işlemler geçerlidir:
Input: 2spooky4me +1
Output: 3spooky5me
Input: 2spooky4me -1
Output: 1spooky3me
Input: 2spooky4me *15
Output: 30spooky60me
Input: 10spooky900me /5
Output: 2spooky180me
Rakam dizileri integraldir; Bu gibi durumlarda tamsayı kesmesi gerekir:
Input: idontunderstandmemes3 /2
Output: idontunderstandmemes1
Girişinizde herhangi bir rakam dizisi olmayabilir:
Input: notreallyafunnymeme *100
Output: notreallyafunnymeme
Tercih ettiğiniz dilde yerel bir işlem olmasa bile üstelleştirmeyi desteklemelisiniz:
Input: 2spooky4me ^3
Output: 8spooky64me
Dizedeki dize dizisi sayısının uzunluğu için bir sınır yoktur:
Input: some1meme2sequences3can4be5really6long7 /2
Output: some0meme1sequences1can2be2really3long3
ek
Diliniz bir dil özelliği olarak rasgele hassas tam sayıları destekliyorsa, bunları kullanmanız gerekir. Olmazsa, isteğe bağlı hassas tamsayıları desteklemeniz gerekmez. Örneğin , dilin bir parçası olduğu için Integer
Haskell yerine kullanmanız gerekir Int
; içinde Java
, BigInteger
bir dil özelliği değil bir kütüphane özelliği olduğu için kullanmanız gerekmez .
Input: 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000spooky4me /2
Output: 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000spooky2me
Bu kod golf , bu yüzden standart boşluklar yasaktır ve en kısa cevap bayt olarak kazanılır!
Liderler Sıralaması
Bu yazının altındaki Yığın Parçacığı, a) dilindeki en kısa çözümlerin bir listesi olarak ve b) genel bir lider tablosu olarak cevaplardan lider tablosu oluşturur.
Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:
## Language Name, N bytes
Gönderinizin N
büyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :
## Perl, 43 + 2 (-p flag) = 45 bytes
Dil adını, daha sonra pasajda görünecek bir bağlantı da yapabilirsiniz:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><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="language-list"> <h2>Shortest Solution 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> <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> <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><script>var QUESTION_ID = 79809; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 45941; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>