Hãy bắt đầu bằng cách xác định sự phản chiếu của một ký tự trong chuỗi:
Cho một chuỗi có các chữ cái chữ cái viết thường khác biệt không có khoảng trắng như abcdefg
, xác định sự phản chiếu của một chữ cái trong chuỗi c
khi di chuyển nó (không thay đổi thứ tự của bất kỳ chữ cái nào khác) đến một vị trí mới trong chuỗi sao cho số lượng chữ cái ban đầu bên phải của nó bây giờ là số chữ cái bên trái của nó.
Vì vậy, một sự phản ánh của bức thư c
trong abcdefg
sẽ là abdecfg
. Giải thích: có 4 chữ cái bên phải c
và bây giờ, có 4 chữ cái bên trái c
.
Một số ví dụ khác:
Phản ánh nhân vật e
trong myfriend
sẽ tạo thành chuỗimyefrind
Phản ánh các nhân vật a
trong axyz
sẽ tạo thành chuỗi xyza
.
Phản ánh các nhân vật b
trong abc
sẽ tạo thành chuỗi abc
.
Phản ánh các nhân vật d
trong d
sẽ tạo thành chuỗi d
.
Phản ánh các nhân vật e
trong ef
sẽ tạo thành chuỗi fe
.
Để biết thêm thông tin hoặc để thử một số trường hợp thử nghiệm, đây là một chương trình (hơi dài) tôi đã viết trong C ++.
Các thách thức
Đưa ra một chuỗi với các chữ cái viết thường khác nhau, đi qua từng ký tự theo thứ tự bảng chữ cái và "phản ánh" nó trong chuỗi.
Làm rõ: Các chữ cái trong chuỗi là từ a-z
, không có khoảng trắng, các chữ cái là duy nhất và chuỗi dài ít nhất 1 chữ cái và dài tối đa 26 chữ cái.
Ví dụ
Đầu vào : dcba
. Đầu ra : dcba
.
Lý do: Đầu tiên, hãy phản ánh a
vì đó là ký tự trong chuỗi xuất hiện sớm nhất trong bảng chữ cái. Bạn sẽ nhận được adcb
. Sau đó, phản ánh b
như nó đến tiếp theo trong bảng chữ cái, để có được badc
. Sau đó, phản ánh c
để có được cbad
, và sau đó d
để có được dcba
.
Đầu vào : myface
. Đầu ra : fyecma
.
Gợi ý: Đi qua các chữ cái theo thứ tự a, c, e, f, m, y
.
Đầu vào : a
. Đầu ra : a
.
Đầu vào : acb
. Đầu ra : bac
.
Đầu vào : cwmfjordbankglyphsvextquiz
. Đầu ra : ieabhqzugdltkfnvpjxsormycw
.
Chấm điểm
- Đầu vào và đầu ra có thể được cung cấp bởi bất kỳ phương pháp thuận tiện .
- Một chương trình đầy đủ hoặc một chức năng được chấp nhận. Nếu một chức năng, bạn có thể trả lại đầu ra thay vì in nó.
- Sơ hở tiêu chuẩn bị cấm.
- Đây là môn đánh gôn, vì vậy tất cả các quy tắc chơi gôn thông thường đều được áp dụng và mã ngắn nhất (tính bằng byte) sẽ thắng.
- Chấp nhận ~ 100 giờ sau khi đăng.
Người chiến thắng hiện tại
<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 = 162891; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 12012; 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>