Diberikan daftar string, output string tunggal yang dibentuk dengan mengambil karakter dari setiap string di setiap posisi, mengurutkannya dengan ASCII ordinal, dan menambahkannya dalam urutan ke string output. Dengan kata lain, untuk n
string input, n
karakter pertama dari output akan menjadi karakter pertama dari setiap input yang diurutkan menurut ordinal, n
karakter kedua dari output akan menjadi karakter kedua dari masing-masing input yang diurutkan berdasarkan ordinal, dan sebagainya di. Anda dapat mengasumsikan bahwa semua string memiliki panjang yang sama, dan bahwa akan ada setidaknya satu string. Semua string hanya terdiri dari karakter yang dapat dicetak ASCII (ordinals 32-127).
Implementasi referensi dengan Python ( coba online ):
def stringshuffle(strings):
res = ''
for i in range(len(strings[0])):
res += ''.join(sorted([s[i] for s in strings],key=ord))
return res
Contoh:
"abc","cba" -> "acbbac"
"HELLO","world","!!!!!" -> "!Hw!Eo!Lr!Ll!Od"
Aturan
- Celah standar dilarang
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan leaderboard dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](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 = 64526; 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>
Pyth, 5 byte
Ritsleting (
C
) input (Q
),M
apsS
ort, lalus
ums.Cobalah online .
sumber
TeaScript , 9 byte
TeaScript memiliki semua built-in yang tepat diimplementasikan dengan semua cara yang salah.
Cobalah online
Tidak disatukan
Penjelasan
sumber
CJam, 5 byte
Coba di sini .
sumber
Python,
5048 byteBerkat @xnor untuk -2 byte!
sumber
"".join
ke variabel.JavaScript (ES6), 57 byte
sumber
Oktaf, 15 byte
Contoh:
sumber
Julia, 46 byte
Ini menciptakan fungsi tanpa nama yang menerima larik string dan mengembalikan string. Untuk menyebutnya, berikan nama, mis
f=x->...
.Tidak Disatukan:
sumber
Minkolang 0,13 , 46 byte
Coba di sini. Mengharapkan input seperti
"HELLO""world""!!!!!"
(jadi tidak ada koma).Penjelasan
sumber
GolfScript, 8 byte
Cobalah online di Web GolfScript .
Bagaimana itu bekerja
sumber
K, 10 byte
Gabungkan (
,/
) jenis ({x@<x}
) masing-masing ('
) dari transpos (+
) dari daftar string.Beraksi:
Sederhana, tetapi K sedikit terluka di sini karena tidak memiliki fungsi pengurutan satu karakter dan alih-alih membagi operasi menjadi operator indeks pencar-mengumpulkan
@
dan primitif yang menghasilkan vektor permutasi yang akan mengurutkan daftar<
.sumber
C ++ 14, 152 byte
Tidak menggunakan keunggulan peta + zip (tebak mengapa)
Penggunaan + tidak digabungkan
sumber
Mathematica, 51 byte
Manipulasi string dalam Mathematica mahal ...
sumber
Japt , 12 byte
20Cobalah online!
Penjelasan
sumber
PHP ,
9291 byteCobalah online!
Saya yakin ini bisa dilakukan lebih pendek dengan tidak mencoba menggunakan fungsi array built-in PHP, tetapi harus mencoba!
Atau 85 byte
@ Ayunan Night2, dilakukan lebih pendek dengan tidak mencoba menggunakan fungsi array bawaan PHP:
Cobalah online!
sumber
array_column
tidak akan bekerja pada array string jika tidak, itu akan sedikit lebih berguna untuk CG. Dan tentu saja harus melewati$argv[0]
selalu menyakitkan ...Clojure / ClojureScript, 43 byte
Menciptakan fungsi anonim. Ditulis dalam REPL ClojueScript, juga harus Clojure valid.
Masukkan di sini , lalu panggil via
(*1 ["HELLO" "world" "!!!!!"])
. Atau lakukan(def f *1)
dan kemudian gunakan(f ["abc" "cba"])
.sumber
Ceylon, 166
String z(String+l)=>String(expand(t(l).map(sort)));[T+]n<T>(T?+i)=>[for(e in i)e else nothing];{[X+]*}t<X>([{X*}+]l)=>l[0].empty then{}else{n(*l*.first),*t(l*.rest)};
Sementara Ceylon memiliki
zip
fungsi , hanya dibutuhkan dua iterables dan bukan iterable.unzip
, di sisi lain, mengambil iterable dari tuple, dan saya tidak ingin mengubah string saya menjadi tuple. Jadi saya menerapkan fungsi transpos saya sendiri, terinspirasi oleh implementasi Haskell yang ditemukan Google untuk saya di suatu tempat .Jenis
n
dant
dapat didefinisikan lebih umum, tetapi ini adalah Codegolf ;-) (n
adalah kasus khusus dari apa yang saya usulkanassertNarrow
dua minggu lalu ).sumber
Perl 6 , 33 byte
Contoh penggunaan:
sumber
𝔼𝕊𝕄𝕚𝕟, 15 karakter / 30 byte
Try it here (Firefox only).
Baru menyadari bahwa fungsi sortash Lodash bekerja pada string, juga.
sumber
Jelly , 3 byte
Cobalah online!
Hanya valid jika dianggap sebagai program lengkap : nilai yang dihasilkan adalah daftar string, tetapi ketika dicetak Jelly secara implisit meratakannya .
sumber
Stax , 5 byte
Begitu dekat dengan LMNOP :(
Jalankan dan debug di staxlang.xyz!
Masukkan semua input ke dalam satu daftar string (
L
), dan transposkan daftar ini (M
). Untuk setiap string yang dihasilkan (F
), sortir (o
) dan cetak (p
) itu.sumber