var QUESTION_ID=85255,OVERRIDE_USER=56179;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
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>
Jawaban:
Pyth, 1 byte
Coba di sini
Transin builtin lain
sumber
Python,
3629 bytezip(*s)
mengembalikan daftar tupel masing-masing karakter, ditransformasikan.Cobalah online
sumber
"cdmy", "aoaa", "rgny"
, yang merupakan daftar["cdmy", "aoaa", "rgny"]
atau tuple("cdmy", "aoaa", "rgny")
map(''.join,zip(*s))
juga berfungsi untuk konversi string (hanya Python 2), dan untuk Python 3,[*map(''.join,zip(*s))]
afaik berfungsimap(''.join,zip(*s))
juga berlaku untuk Python 3 - kami mengizinkan iterators / generator menggantikan daftar secara default.Jelly , 1 byte
Cobalah online!
sumber
MATL , 1 byte
Cobalah online!
Mengambil input secara implisit, transpos, menampilkan output secara implisit.
sumber
PowerShell v2 +,
6654 byteYo ... tidak
map
, tidakzip
, tidaktranspose
, dll, jadi kita harus menggulung sendiri. Alat peraga besar ke @DarthTwon untuk golf 12-byte.Mengambil input
$n
, mengaturfor
lingkaran. Inisialisasi diatur$x
ke0
, tes adalah apakah kita masih memiliki huruf dalam kata kita$n[0][$x]
, dan kita menambah$x++
setiap iterasi.Di dalam loop, kami mengambil array string kami, pipa itu ke loop batin yang memuntahkan karakter yang sesuai dari setiap kata. Itu diringkas dalam
-join
untuk membentuk string, dan string itu dibiarkan pada pipa. Pada akhir eksekusi, string pada pipeline dicetak secara implisit.sumber
,
daripada memikirkan jawabannyaparam($n)$x=0;while($n[0][$x]){-join($n|%{$_[$x]});$x++}
. Dan tidak ada kesalahan di sini: Dfor
lingkaran untuk dua lainnya. ;-)while
loop saya . Kerja bagus pak!Vim,
3736 penekanan tombolSemua jawaban lain membosankan, dan menggunakan built-byte byte tunggal yang membosankan. Berikut ini jawaban hack yang melakukan semuanya secara manual, dalam sesuatu yang bahkan bukan bahasa pemrograman:
Penjelasan:
Sekarang, semuanya baik-baik saja, tetapi buffer memiliki beberapa teks tambahan yang tersisa. Jadi kita harus:
sumber
CJam,
65 byteDisimpan 1 byte berkat Luis Mendo.
Cobalah online!
sumber
Pyke, 1 byte
Coba di sini!
Mengubah urutan.
sumber
Retina ,
4543 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Linefeed terkemuka sangat penting. Input dan output adalah daftar string ASCII yang dapat diakhiri linefeed (catat bahwa keduanya memiliki satu linefeeding trailing tunggal)
Cobalah online!
Saya tahu untuk sementara waktu bahwa memindahkan blok persegi panjang akan menyusahkan di Retina (padahal mentransposisikan kotak tidak terlalu buruk), tetapi tidak pernah benar-benar mencoba. Solusi pertama memang panjang 110 byte kekalahan, tetapi setelah beberapa perubahan substansial dalam pendekatan, yang dihasilkan 45 byte sejauh ini tidak seburuk yang saya duga (tapi masih ...). Penjelasan akan mengikuti besok.
Penjelasan
Tahap 1: Sortir
Ini melakukan tugas utama menyusun ulang karakter dalam input, tetapi akhirnya mengacaukan pemisahan menjadi beberapa baris. Menariknya, jika kita menghapus
|¶
, kita mendapatkan kode yang diperlukan untuk mengubah input persegi.Tahap sortir (dilambangkan oleh
O
) bekerja seperti ini: mereka menemukan semua kecocokan dari regex yang diberikan (hal setelah`
), dan kemudian mengurutkan kecocokan itu dan memasukkan kembali mereka ke tempat-tempat di mana kecocokan ditemukan. Seperti yang terjadi, regex ini cocok dengan setiap karakter tunggal: umpan tidak-line melalui.(?<=(.*))
alternatif dan umpan baris melalui¶
. Oleh karena itu, semua karakter di input. Bagian yang lebih menarik adalah apa yang mereka diurutkan oleh .The
$
pilihan mengaktifkan "sort-by" mode, di mana setiap pertandingan diganti dengan pola substitusi pada baris kedua, yang kemudian digunakan untuk membandingkan pertandingan. Selanjutnya,#
Retina memberitahu untuk mengubah hasil substitusi menjadi bilangan bulat, dan membandingkan bilangan bulat tersebut (alih-alih memperlakukannya sebagai string).Jadi akhirnya, kita perlu melihat regex dan substitusi. Jika alternatif pertama cocok (yaitu, kami telah mencocokkan karakter apa pun dalam salah satu baris), maka
(?<=(.*))
menangkap semuanya hingga karakter itu pada baris itu ke dalam grup1
. The$.1
dalam pola substitusi menggantikan ini dengan panjang kelompok1
. Oleh karena itu, karakter pertama dalam setiap string menjadi1
, yang kedua menjadi tidak digunakan dalam kasus ini, substitusi kosong, tetapi untuk keperluan opsi, ini dipertimbangkan . Itu berarti, semua umpan garis diurutkan ke depan.2
, yang ketiga menjadi3
dan seterusnya. Seharusnya jelas sekarang bagaimana ini mentransposisi input kuadrat: semua karakter pertama dari baris datang pertama dan semua berakhir di baris paling atas, kemudian semua karakter kedua berakhir di baris kedua dan seterusnya. Tetapi untuk input persegi panjang ini, kami juga mencocokkan umpan baris. Sejak kelompok1
#
0
Jadi sekarang kita memiliki karakter dalam urutan pertama (karakter pertama dari setiap string, karakter kedua dari setiap string, dll.) Dan semua umpan baris di awal.
Tahap 2: Cocokkan
Kita sekarang perlu membagi karakter menjadi garis dengan panjang yang benar. Panjang ini sesuai dengan jumlah baris dalam input asli, yang sesuai dengan jumlah baris yang kita miliki di awal string.
Pemisahan dilakukan di sini dengan bantuan tahap pertandingan, yang hanya menemukan semua pertandingan dari regex yang diberikan dan menggunakan
!
opsi untuk mencetak pertandingan tersebut (standarnya adalah menghitungnya). Jadi tujuan dari regex adalah untuk mencocokkan satu baris sekaligus.Kita mulai dengan "menghitung" angka dengan tampilan di belakang
(?<=(¶)*.*)
. Ini menghasilkan satu tangkapan dalam grup1
untuk setiap linefeed di depan.Kemudian, untuk setiap tangkapan itu, kami mencocokkan satu karakter dengan
(?<-1>.)+
.sumber
kode mesin x86, 19 byte
Dalam hex:
Input::
ECX
# string (n)EDX
,: panjang string individu (m)ESI
,: array string input,:EDI
output buffer, menerima array string. Array dianggap didefinisikan sebagaichar src[n][m+1]
input danchar dst[m][n+1]
output, dan semua string diakhiri dengan NULL.sumber
Brachylog , 5 byte
Mengharapkan daftar string sebagai input, mis
run_from_atom('z:ca.',["money":"taken":"trust"],Output).
Penjelasan
sumber
05AB1E, 3 byte
Dijelaskan
Cobalah online
sumber
CJam , 3 byte
Ini adalah blok kode (setara dengan fungsi; diizinkan secara default ) yang mengharapkan input pada stack dan meninggalkan output pada stack.
Cobalah online!
sumber
JavaScript ES6,
4846 byteSaya merasa ditinggalkan, kami tidak memiliki fungsi zip bawaan. Terima kasih nicael untuk menunjukkan kesalahan tipe saya.
Pemakaian
kembali
sumber
[...a[0]].map
, karenaa[0]
bukan array..join
ed mereka untuk memperbaiki masalah itu.join``
alih-alihjoin('')
menyimpan 2 byte. Downvote ditarikUtilitas Bash + BSD, 27
I / O via STDIN / STDOUT string yang dipisahkan baris baru.
Anda mungkin perlu menginstal
rs
dengansudo apt install rs
atau serupa. Berfungsi di luar kotak pada OS X.The
-T
pilihan untukrs
melakukan angkat berat dari transposisi tersebut. Sisanya hanya memformat:sed
perintah hanya menyisipkan:
setelah setiap karakter-c:
menentukan kolom input:
dipisahkan-g0
menentukan kolom output memiliki pemisahan lebar nolJika pembacaan halaman
rs
manual saya benar, maka yang berikut harus bekerja untuk skor 12, tapi sayangnya tidak berhasil - lihat catatan di bawah ini:Contoh output:
Jika input diharapkan semua ASCII yang dapat dicetak, maka karakter
:
tersebut dapat diganti dengan beberapa karakter yang tidak dapat dicetak , misalnya 0x7BEL
.Catatan
Saya ingin mengerti mengapa saya tidak bisa mendapatkan
-E
opsi untuk bekerja dan menyingkirkansed
preprocessing. Saya menemukanrs
kode sumber di sini . Seperti yang Anda lihat, memberi opsi ini menetapkanONEPERCHAR
bendera. Namun, tidak ada dalam kode yang benar-benar memeriksa keadaan bendera ini. Jadi saya pikir kita dapat mengatakan bahwa meskipun fakta bahwa opsi didokumentasikan, itu tidak dilaksanakan.Faktanya, opsi ini didokumentasikan dalam
rs
manual Linux :tapi bukan versi OS X.
sumber
PHP, 82 byte
mengambil dan mengembalikan array string
kerusakan
contoh
sumber
APL, 3 byte
↑
mengambil string input dan mengubahnya menjadi matriks char.⍉
transposes matriks.↓
membagi kembali baris-baris matriks yang dihasilkan menjadi string.sumber
K, 1 byte
Coba di sini!
Mengubah urutan
sumber
Mathematica, 26 byte
Fungsi anonim. Mengambil daftar string sebagai input dan mengembalikan daftar string sebagai output. Karakter Unicode adalah U + F3C7, mewakili
\[Transpose]
. Bekerja dengan mengonversi ke matriks karakter, mentransposisi, dan mengonversi kembali ke daftar string. Jika format input / output diregangkan, maka transpose 5-byte sederhana akan berfungsi:sumber
\[Transpose]
.ᵀ
?⍉
.MATLAB / Octave, 4 bytes
This defines an anonymous function. Input format is
['car'; 'dog'; 'man'; 'yay']
.Try it here.
sumber
f = @(x)x'
,f([{'abcd'},{'abcd'},{'abcd'}])
outputs ans = 'abcd' 'abcd' 'abcd'f(['abcd';'abcd';'abcd'])
. I've edited the answer to specify the input formatHaskell, 41 bytes
Or with a bit more air:
The second list is the list of words repeated “the length of a word” time. On each list of words, we select the n-th letter of each word, giving the result.
sumber
words
andunwords
. Further,map(\_->l)(l!!0)
isl<*l!!0
, so it boils down to\l->zipWith($)[map(!!n)|n<-[0..]]$l<$l!!0
.l<$l!!0
(first time wrong, second time right), but you got it right anyway.Common Lisp, 62 bytes
The
map
function takes a result type (herelist
), a function f to apply and one or more sequences s1, ..., sn. All sequences are iterated in parallel. For each tuple of elements (e1,...,en) taken from those sequences, we call (f e1 ... en) and the result is accumulated in a sequence of the desired type.We take a list of strings, say
("car" "dog" "man" "yay")
, and useapply
to callmap
. We have to do this so that the input list is used as more arguments tomap
. More precisely, this:... is equivalent to:
And since strings are sequences, we iterate in parallel over all first characters, then all second characters, etc... For example, the first iteration calls f as follows:
The anonymous lambda takes the list of arguments given to it and coerces it back to a string.
sumber
Perl, 91 bytes
So lengthy one..
Try it here!
sumber
Ruby, 46 bytes
Probably the first time that "Ruby strings aren't Enumerables" is actually biting me hard since I had to map the strings into arrays before processing. (Normally having to use
String#chars
isn't enough of a byte loss to matter, but since I need to map them, it stings a lot more)sumber
Clojure, 68 bytes
Maps a function which is just
reduce
(goes on elements of the list one by one and joins nth character of the string) on the range from 0 to length of the first string.See it online: https://ideone.com/pwhZ8e
sumber
C#, 53 bytes
C# lambda (
Func
) where the output isIList<string>
and the output isIEnumerable<string>
. I dont know how workzip
in other language but I can't find a way to use the C#'s one here.Aggregate
fit the need well. No transpose in C#, there is one in Excel but I wont use it.Try it online!
sumber