var QUESTION_ID=62587,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/62587/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>
Antworten:
CJam,
1210 BytesDies ist eine anonyme Funktion, die nimmt
s p
auf dem Stapel und läßt das Ergebnis auf dem Stapel. Online-DemoMit Dank an Martin Büttner für 2 Bytes.
Präparation
quelle
{_$@$er}
ist zwei Bytes kürzer.J 9 Bytes
Dies ist ein dyadisches Verb , das nimmt p und s wie linke und rechte Argumente. Versuchen Sie es online mit J.js .
Testlauf
Wie das geht
Sprich definierten wir die linken und rechten Eingang von dem Beispiel zugeordnet über
Dann:
Der Zug
/:^:2~/:~
ist ein Haken der Verben/:^:2~
und/:~
ruft soausführt
Das Adverb
~
in/:~
ist reflexiv , da/:
es monadisch verwendet wird. Also anrufenausführt
Das Adverb
~
in/:^:2~
ist passiv , da das Verb/:^:2
dyadisch verwendet wird. So rufenausführt
Das Adverb
^:
ist Macht . Also anrufenausführt
Dass sie alle zusammen, rufen
ausführt
Wie , dass Werke
Dyadic
/:
wird mit bewertet , dh es werdenx /:y
die Elemente von x zurückgegeben , sortiert nach den entsprechenden Werten vony
.s /: s
sortiert einfach die Elemente von s .(s /: s) /: p
sortiert die (sortierten) Elemente von s nach den entsprechenden Werten von p .Grading bis berechnet zweimal im Wesentlichen die ordinals seines rechten Arguments.
Somit
(s /: s) /: (s /: s) /: p
sortiert die (sortiert) Elemente s , um die Reihenfolge der Elemente nachahmt p .quelle
Mathematica,
3227 BytesAnwendungsbeispiel:
Zurück Versuch:
quelle
o = Ordering; (Sort@#)[[o@o@#2]] &
Permute
! Sehr nützlich Verwendung von Permutationen.J, 17 Bytes
Dies ergibt ein dyadisches (dh binäres) Verb. Es kann wie folgt hervorgerufen werden:
Erläuterung
Dies ist möglicherweise nicht die kürzest mögliche Lösung, aber es ist ein neuartiger Ansatz.
quelle
Pyth, 10 Bytes
Probieren Sie es online aus: Demonstration
Erläuterung
quelle
XQSQSvz
drei Bytes ist kürzer.Pyth, 7 Bytes
Dies ist ein komplettes Programm , die String - Darstellungen erwartet s und p auf zwei Linien. Probieren Sie es online aus.
Wie es funktioniert
quelle
Python 2, 51
quelle
a=sorted
würde die gleiche Wirkung haben.=
.Mathematica
56 43 3029 BytesOrdering@#2
Gibt die Reihenfolge der Zahlen im Muster zurück.Ordering@Ordering@#2
gibt die Positionen an, die die sortierten Elemente in der Quelle einnehmen sollen.Sort[#][[o@o@#2]]&
gibt die Quelle in den erforderlichen Positionen, nämlich diejenigen, die die gleiche relative Reihenfolge wie die Musterliste.Testen
quelle
CJam, 8 Bytes
Dies ist eine anonyme Funktion, die s und p (ganz oben) auf dem Stapel erwartet und die neu geordneten s zurückgibt. Versuchen Sie es online in dem CJam Dolmetscher .
Wie es funktioniert
quelle
J, 13 Bytes
Ich habe immer noch Probleme damit, Js Verbkomposition in den Kopf zu stecken, also fühle ich mich wie einige von denen
@
und[]
könnte unnötig sein. Wenn ein erfahrener J-Benutzer mich wissen lassen könnte, ob dies komprimiert werden kann, wäre das großartig. :)Das Verb kann wie folgt verwendet werden:
Erläuterung
quelle
/:
, um{
a@
für 11 Bytes zu entfernen:/:~@]/:/:@[
/:
, aber ich bin noch nicht dazu gekommen, die Antwort zu aktualisieren (({~/:)&/:{[
).APL,
17-12BytesDank @Dennis ist das jetzt sehr elegant.
Hier ist eine schöne 14-Byte-Lösung, die keine doppelte Indizierung verwendet:
Leider können wir Arrays in Zügen in APL nicht indizieren.
quelle
Python 2, 48
Ein großer Funktionsumfang. Hierbei wird der Elementübersetzungsansatz vieler anderer Antworten mithilfe eines Wörterbuchs verwendet.
Die markierte Eingabe
*l
erwartet die Muster und die Quelle in dieser Reihenfolge und wandelt sie in eine Liste uml
.Die Zuordnung
sorted
sortiert beide Listen unddict(zip(_))
wandelt ein Listenpaar in ein Wörterbuch mit Schlüsseln aus der ersten Liste um, die mit den Werten in der zweiten Liste in aufsteigender Reihenfolge übereinstimmen. Das Ergebnis ist also, dass dasi
-th größte Element des Musters mit demi
-th größten Element der Quelle übereinstimmt .Schließlich transformieren wir das pattern (
l[0]
) über dieses Wörterbuch, indem wir seine.get
Methode zuordnen.quelle
Bash + Coreutils, 55
Die Eingabe erfolgt als zwei Dateinamen für die Quelle bzw. das Muster:
quelle
R, 38 Bytes
quelle
match
.Ruby, 51 Bytes
quelle
Haskell, 65 Bytes
Anwendungsbeispiel:
[-5,9,4,13,11,-6,0] # [7,-4,1,-8,4,-3,12]
->[11,-5,4,-6,9,0,13]
.Wie es funktioniert:
quelle
R, 37 Bytes
quelle
TeaScript, 15 Bytes
Dies nimmt die Eingabe als Array an. Der Dolmetscher ist momentan nicht verfügbar, weil ich den neuen Dolmetscher einsetze
Erläuterung
quelle
13 9 -6 4 11 -5 0
für die Sample-Eingabe erhalten. ??Jelly , 6 Bytes, Sprachnachstellung
Probieren Sie es online!
Dies nimmt das Muster, gefolgt von der Quelle, als zwei separate Argumente.
Erläuterung
quelle
Haskell, 56 Bytes
Definiert eine Binärfunktion
%
. Jeder Eintrag inp
wird in den Eintrags
mit der gleichen Ordnungsstatistik, dh dem relativen Rang in seiner Liste, umgewandelt. Die Ordnungsstatistik vonx
inp
wird durch Zählen der Elemente ermittelt, die kleiner sind als sie (wassort p!!x
ärgerlich istMaybe
). Das Ergebnis wird in indiziertsort s
.Eine
zip/lookup
Lösung hat die gleiche Länge, außer dass sieJust
Zahlen enthält.quelle