Wenn Sie eine Liste von Zeichenfolgen erhalten, geben Sie eine einzelne Zeichenfolge aus, die aus der Aufnahme eines Zeichens an jeder Position, der Sortierung nach ASCII-Ordnungszahlen und dem Anhängen an die Ausgabezeichenfolge besteht. Mit anderen Worten, für n
Eingabezeichenfolgen sind die ersten n
Zeichen der Ausgabe die ersten Zeichen jeder der Eingaben, sortiert nach Ordnungszahl, die zweiten n
Zeichen der Ausgabe sind die zweiten Zeichen jeder der Eingaben, sortiert nach Ordnungszahl und so weiter auf. Sie können davon ausgehen, dass die Zeichenfolgen alle gleich lang sind und mindestens eine Zeichenfolge vorhanden ist. Alle Zeichenfolgen bestehen nur aus druckbaren ASCII-Zeichen (Ordnungszahlen 32-127).
Referenzimplementierung in Python ( online ausprobieren ):
def stringshuffle(strings):
res = ''
for i in range(len(strings[0])):
res += ''.join(sorted([s[i] for s in strings],key=ord))
return res
Beispiele:
"abc","cba" -> "acbbac"
"HELLO","world","!!!!!" -> "!Hw!Eo!Lr!Ll!Od"
Regeln
- Standardlücken sind verboten
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes
Bestenliste
Das Stapel-Snippet am Ende dieses Beitrags generiert die Rangliste aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamtrangliste.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
## Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
## Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:
## [><>](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 Bytes
Zippt (
C
) den Eingang (Q
),M
apsS
ort, danns
ums.Probieren Sie es online aus .
quelle
TeaScript , 9 Bytes
TeaScript hat alle richtigen eingebauten Funktionen auf die falsche Weise implementiert.
Probieren Sie es online aus
Ungolfed
Erläuterung
quelle
CJam, 5 Bytes
Probieren Sie es hier aus .
quelle
Python,
5048 BytesDanke an @xnor für -2 Bytes!
quelle
"".join
in einer Variablen speichern .JavaScript (ES6), 57 Byte
quelle
Oktave, 15 Bytes
Beispiel:
quelle
Julia, 46 Bytes
Dadurch wird eine unbenannte Funktion erstellt, die ein Array von Zeichenfolgen akzeptiert und eine Zeichenfolge zurückgibt. Um es zu nennen, geben Sie ihm einen Namen, z
f=x->...
.Ungolfed:
quelle
Minkolang 0,13 , 46 Bytes
Probieren Sie es hier aus. Erwartet Eingaben wie
"HELLO""world""!!!!!"
(also keine Kommas).Erläuterung
quelle
GolfScript, 8 Bytes
Probieren Sie es online im Web GolfScript aus .
Wie es funktioniert
quelle
K, 10 Bytes
Join (
,/
) die Art ({x@<x}
) jeder ('
) der transponierten (+
) einer Liste von Zeichenfolgen.In Aktion:
Einfach, aber K ist hier ein bisschen verletzt, weil es keine Sortierfunktion für einzelne Zeichen gibt und stattdessen die Operation in einen Scatter-Gather-Indexoperator
@
und ein Grundelement unterteilt wird, das den Permutationsvektor ergibt, der eine Liste sortieren würde<
.quelle
C ++ 14, 152 Bytes
Keine Vorteile von map + zip nutzen (rate warum)
Ungolfed + Nutzung
quelle
Mathematica, 51 Bytes
String-Manipulation in Mathematica ist teuer ...
quelle
Japt , 12 Bytes
20Probieren Sie es online!
Erläuterung
quelle
PHP ,
9291 BytesProbieren Sie es online!
Ich bin zuversichtlich, dass dies kürzer gemacht werden könnte, wenn man nicht versucht, die eingebauten Array-Funktionen von PHP zu verwenden, sondern es versuchen muss!
Oder 85 Bytes
@ Night2's Swing, kürzer gemacht, indem man nicht versucht, die eingebauten Array-Funktionen von PHP zu verwenden:
Probieren Sie es online!
quelle
array_column
es mit einer Reihe von Zeichenfolgen nicht funktioniert, sonst wäre es für CG viel nützlicher. Und natürlich ist das Überspringen$argv[0]
immer auch ein Schmerz ...Clojure / ClojureScript, 43 Byte
Erzeugt eine anonyme Funktion. In einem ClojueScript REPL geschrieben, sollte auch Clojure gültig sein.
Geben Sie es hier ein und rufen Sie über an
(*1 ["HELLO" "world" "!!!!!"])
. Oder machen(def f *1)
und dann benutzen(f ["abc" "cba"])
.quelle
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)};
Während Ceylon eine
zip
Funktion hat , werden nur zwei Iterables anstelle eines Iterables benötigt.unzip
Auf der anderen Seite wird eine Iteration von Tupeln verwendet, und ich möchte meine Zeichenfolgen nicht in Tupel konvertieren. Also habe ich meine eigene Transponierungsfunktion implementiert, inspiriert von einer Haskell-Implementierung, die Google irgendwo für mich gefunden hat .Die Arten von
n
undt
könnten viel allgemeiner definiert werden, aber das ist Codegolf ;-) (n
ist ein Sonderfall von dem, was ich vorassertNarrow
zwei Wochen vorgeschlagen habe ).quelle
Perl 6 , 33 Bytes
Anwendungsbeispiel:
quelle
𝔼𝕊𝕄𝕚𝕟 15 Zeichen / 30 Bytes
Try it here (Firefox only).
Ich habe gerade festgestellt, dass Lodashs sortBy-Funktion auch für Strings funktioniert.
quelle
Gelee , 3 Bytes
Probieren Sie es online!
Nur gültig, wenn es als vollständiges Programm betrachtet wird : Der resultierende Wert ist eine Liste von Zeichenfolgen, aber wenn er gedruckt wird, glättet Jelly ihn implizit .
quelle
Stax , 5 Bytes
So nah an LMNOP :(
Führen Sie es aus und debuggen Sie es unter staxlang.xyz!
Fügen Sie alle Eingaben in eine Liste von Zeichenfolgen ein (
L
) und transponieren Sie diese Liste (M
). Für jede resultierende Zeichenfolge (F
) sortieren (o
) und drucken (p
).quelle