Mari kita mulai dengan mendefinisikan refleksi karakter dalam sebuah string:
Diberikan string dengan huruf alfabet huruf kecil berbeda tanpa spasi seperti abcdefg
, tentukan refleksi huruf dalam string c
sebagai memindahkannya (tanpa mengubah urutan huruf lainnya) ke tempat baru di string sehingga jumlah huruf awalnya di sebelah kanannya sekarang jumlah huruf di sebelah kiri itu.
Dengan demikian, cerminan huruf c
di abcdefg
akan abdecfg
. Penjelasan: ada 4 huruf di sebelah kanan c
dan sekarang, ada 4 huruf di sebelah kiri c
.
Beberapa contoh lagi:
Mencerminkan karakter e
dalam myfriend
akan membentuk stringmyefrind
Mencerminkan karakter a
dalam axyz
akan membentuk string xyza
.
Mencerminkan karakter b
dalam abc
akan membentuk string abc
.
Mencerminkan karakter d
dalam d
akan membentuk string d
.
Mencerminkan karakter e
dalam ef
akan membentuk string fe
.
Untuk informasi lebih lanjut atau mencoba beberapa kasus uji, berikut ini adalah program (agak panjang) yang saya tulis di C ++.
Tantangan
Diberikan string dengan huruf kecil berbeda, buka setiap karakter secara alfabet dan "pantulkan" dalam string.
Klarifikasi: Huruf-huruf dalam string berasal dari a-z
, tidak ada spasi, huruf-hurufnya unik, dan string paling sedikit 1 huruf dan paling panjang 26 huruf.
Contohnya
Input: dcba
. Output: dcba
.
Alasan: Pertama, cerminkan a
sebagaimana karakter dalam string yang paling awal dalam alfabet. Anda akan mendapatkannya adcb
. Kemudian, refleksikan b
seperti apa yang terjadi berikutnya dalam alfabet, untuk mendapatkan badc
. Kemudian, refleksikan c
untuk mendapatkan cbad
, dan kemudian d
untuk mendapatkan dcba
.
Input: myface
. Output: fyecma
.
Petunjuk: Periksa surat-surat secara berurutan a, c, e, f, m, y
.
Input: a
. Output: a
.
Input: acb
. Output: bac
.
Input: cwmfjordbankglyphsvextquiz
. Output: ieabhqzugdltkfnvpjxsormycw
.
Mencetak gol
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
- Menerima ~ 100 jam setelah posting.
Pemenang saat ini
<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>
Jawaban:
Brain-Flak , 188 byte
Cobalah online!
Selain refleksi yang dijelaskan dalam spesifikasi tantangan, kode ini juga membalik string tepat 26 kali. Ini tidak berpengaruh pada hasil akhir.
sumber
05AB1E ,
2017 byteCobalah online!
Penjelasan
Dengan contoh untuk iterasi pertama
myface
String dikelilingi dengan spasi setiap iterasi karena pemisahan pada huruf pertama atau terakhir dari string akan menghasilkan daftar panjang-1 jika tidak dan gabungan tidak akan menyertakan surat itu.
sumber
Pyth,
18161916 byteCoba di sini
Penjelasan
sumber
Python 3 ,
8073 byteTerima kasih kepada Esolanging Fruit karena mengingatkan saya bahwa fungsi dapat kembali dengan mengubah argumen mereka.
Cobalah online!
Mengambil input sebagai daftar karakter.
sumber
Python 2 , 70 byte
Cobalah online!
Memodifikasi daftar input
sumber
Retina 0.8.2 , 61 byte
Cobalah online! Tautan termasuk kasus uji. Penjelasan:
Mulai loop di
a
.Jika input berisi huruf saat ini, pindahkan ke akhir, dengan string
_
s yang mewakili posisi aslinya.Untuk setiap
_
memindahkan huruf kembali satu karakter.Tambahkan surat. Setelah
z
mengubahnya menjadi!
sehingga tidak cocok dengan apa pun dan loop berakhir.Hapus
!
.sumber
Java 8,
1409692888785 byte-44 byte membuat port dari jawaban Python 2 @TFeld .
-6 byte terima kasih kepada @ OlivierGrégoire .
Memodifikasi Daftar input alih-alih membuat yang baru.
Penjelasan:
Cobalah online.
sumber
s->{for(char c=96;++c<123;){int i=s.indexOf(c);if(i>=0)s.add(s.size()+~i,s.remove(i));}}
for(char c=9;++c>1;)
lebih baik ;-)char
juga membungkus sepertiInteger.MAX_VALUE + 1 == Integer.MIN_VALUE
.. Cerdas!s
adalah ArrayList, jadiindexOf
akan bertipe generikT
(yangCharacter
untuk daftar input ini).JavaScript,
858079 byte-6 byte terima kasih kepada @DanielIndie
Cobalah online!
sumber
Ruby , 51 byte
Cobalah online!
Mengambil array karakter
Kembali dengan memodifikasi input
sumber
Merah ,
9694 byte2 byte disimpan berkat Kevin Cruijssen
Cobalah online!
Lebih mudah dibaca:
sumber
find x c replace x c""insert at x i c
untukfind x c insert at replace x c""i c
menghilangkanx
ruang dan.R ,
737269 byteCobalah online!
Input dan output sebuah vektor karakter.
sumber
c
sebagai nama variabel? itu mengerikan, bahkan untuk golf kode!c
untukchar
) daripada built-in yang tidak digunakan.c
, dan itu mengerikan ketika saya tidak tahu apa yang terjadi. Saya biasanya menggunakanK
atauk
atau bahkanC
hanya untuk menghindari masalah seperti itu, tetapi saya benar-benar mengerti.append
adalah def alat yang tepat untuk pekerjaan itu.Perl 5
-p
, 37 byteCobalah online!
sumber
Japt ,
2322 byteDisimpan satu byte berkat Oliver .
Cobalah online!
sumber
,É
denganJ
Haskell, 87 byte
Cobalah online!
sumber
f s=foldl(#)s['a'..'z']
?['a'..]
tidak terbatas, karenaChar
milik kelasBounded
. Sebuah daftar dengan..]
dariBounded
nilai-nilai berhenti dimaxBound
. Cobalah:print [False ..]
.SNOBOL4 (CSNOBOL4) ,
132128 byteCobalah online!
Implementasi langsung dari algoritma yang diperlukan. Menyimpan beberapa byte dengan beralih ke fungsi daripada program lengkap; penjelasannya tetap sama, kurang lebih.
sumber
Jelly ,
1211 byteTautan monadik yang menerima daftar karakter dan mengembalikan daftar karakter.
Cobalah online!
Bagaimana?
sumber
ḟ
(filter out) tapi saya belum berhasil.sorted
dan kemudian berjalan melalui iterasi dari apa yang tampak sebagai operasi yang kurang kompleks (perataan, pemisahan pada indeks yang ditemukan, bergabung, membalikkan ). - dan Pythonsorted
adalah O (n log n).C (dentang) ,
164162 byteCobalah online!
f()
mengambil char-array yang berisi string input dan panjang array ini sebagai parameter dan melakukan refleksi yang diperlukan di tempat.callf()
tidak cukup mencetak.Kredit
-2 byte. @Kevin. Terima kasih
sumber
char *s
dan perubahani=96
untuki=9
ke Hemat 2 byte.a
. Terima kasihAPL + WIN, 63 byte
Anjuran untuk input string
Penjelasan:
sumber
Perl ,
7470 byte8480 byte termasuk doa sebagai unix filtersumber