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>
Réponses:
CJam,
1210 octetsIl s'agit d'une fonction anonyme qui prend
s p
la pile et laisse le résultat sur la pile. Démo en ligneMerci à Martin Büttner pour 2 octets.
Dissection
la source
{_$@$er}
est de deux octets plus court.J, 9 octets
Il s'agit d'un verbe dyadique qui prend p et s comme arguments gauche et droit. Essayez en ligne avec J.js .
Essai
Comment ça marche
Supposons que nous ayons défini les entrées gauche et droite de l'exemple via
Ensuite:
Le train
/:^:2~/:~
est un crochet des verbes/:^:2~
et/:~
donc appelerexécute
L'adverbe
~
en/:~
est réflexif , puisqu'il/:
est utilisé de façon monadique. Ainsi, appelerexécute
L'adverbe
~
en/:^:2~
est passif , puisque le verbe/:^:2
est utilisé en dyade. Ainsi, appelerexécute
L'adverbe
^:
est le pouvoir . Ainsi, appelerexécute
Mettre tout cela ensemble, appeler
exécute
Comment ça marche
Dyadique
/:
est gradué en utilisant , c'est-à-dire,x /:y
renvoie les éléments de x , triés selon les valeurs correspondantes dey
.s /: s
trie simplement les éléments de l' art .(s /: s) /: p
trie les éléments (triés) de s selon les valeurs correspondantes de p .Grading up deux fois calcule essentiellement les ordinaux de son bon argument.
Ainsi,
(s /: s) /: (s /: s) /: p
trie les éléments (triés) de s , imitant l'ordre des éléments de p .la source
Mathematica,
3227 octetsExemple d'utilisation:
Tentative précédente:
la source
o = Ordering; (Sort@#)[[o@o@#2]] &
Permute
! Utilisation très utile des permutations.J, 17 octets
Cela équivaut à un verbe dyadique (signifiant binaire). Il peut être évoqué comme suit:
Explication
Ce n'est peut-être pas la solution J la plus courte possible, mais c'est une nouvelle approche.
la source
Pyth, 10 octets
Essayez-le en ligne: Démonstration
Explication
la source
XQSQSvz
est de trois octets plus court.Pyth, 7 octets
Il s'agit d'un programme complet qui attend des représentations de chaînes de s et p sur deux lignes. Essayez-le en ligne.
Comment ça marche
la source
Python 2, 51
la source
a=sorted
aurait le même effet.=
.Mathematica
56 43 3029 octetsOrdering@#2
renvoie l'ordre des nombres dans le modèle.Ordering@Ordering@#2
donne les positions que les éléments triés dans la source doivent occuper.Sort[#][[o@o@#2]]&
renvoie la source dans les positions requises, à savoir celles qui ont le même ordre relatif que la liste de modèles.Essai
la source
CJam, 8 octets
Il s'agit d'une fonction anonyme qui attend s et p (le plus haut) sur la pile et pousse les s réorganisés en retour. Essayez-le en ligne dans l' interpréteur CJam .
Comment ça marche
la source
J, 13 octets
J'ai toujours du mal à envelopper ma tête autour de la composition des verbes de J, donc je me sens comme certains d'entre eux
@
et[]
peut-être inutile. Si un utilisateur J plus expérimenté pouvait me faire savoir si cela pouvait être compressé, ce serait bien. :)Le verbe peut être utilisé comme suit:
Explication
la source
/:
pour vous en débarrasser{
et un@
, pour 11 octets:/:~@]/:/:@[
/:
, mais je n'ai pas encore mis à jour la réponse (({~/:)&/:{[
).APL,
1712 octetsGrâce à @Dennis, c'est désormais très élégant.
Voici une belle solution de 14 octets qui n'utilise pas la double indexation:
Malheureusement, nous ne pouvons pas indexer les tableaux à partir des trains dans APL.
la source
Python 2, 48
Un grand globe de fonctions. Cela utilise l'approche de traduction des éléments de nombreuses autres réponses à l'aide d'un dictionnaire.
L'entrée
*l
suivie attend les motifs et la source dans cet ordre et les transforme en listel
.Le mappage
sorted
trie les deux listes etdict(zip(_))
transforme une paire de listes en dictionnaire avec les clés de la première liste correspondant aux valeurs de la seconde, dans l'ordre croissant. Ainsi, le résultat est que lei
-ème plus grand élément du motif est mis en correspondance avec lei
-ème plus grand élément de la source.Enfin, nous transformons le motif (
l[0]
) via ce dictionnaire en cartographiant sa.get
méthode.la source
Bash + coreutils, 55
L'entrée est considérée comme deux noms de fichier, pour la source et le motif respectivement:
la source
R, 38 octets
la source
match
.Rubis, 51 octets
la source
Haskell, 65 octets
Exemple d'utilisation:
[-5,9,4,13,11,-6,0] # [7,-4,1,-8,4,-3,12]
->[11,-5,4,-6,9,0,13]
.Comment ça marche:
la source
R, 37 octets
la source
TeaScript, 15 octets
Cela prend l'entrée comme un tableau. L'interprète est actuellement en panne parce que je mets en place le nouvel interprète de fantaisie
Explication
la source
13 9 -6 4 11 -5 0
pour l'entrée d'échantillon. ??Jelly , 6 octets, défi de postdates de langue
Essayez-le en ligne!
Cela prend le modèle, suivi de la source, comme deux arguments distincts.
Explication
la source
Haskell, 56 octets
Définit une fonction binaire
%
. Chaque entrée dansp
est transformée en entrée des
avec la même statistique d'ordre, c'est-à-dire le rang relatif dans sa liste. La statistique d'ordre dex
inp
est trouvée en comptant les éléments plus petits qu'elle (sort p!!x
produit un ennuyeuxMaybe
). Le résultat est indexé danssort s
.Une
zip/lookup
solution a la même longueur, sauf qu'elle donne desJust
nombres.la source