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>
Respuestas:
CJam,
1210 bytesEsta es una función anónima, que toma
s p
la pila y deja el resultado en la pila. Demostración en líneaGracias a Martin Büttner por 2 bytes.
Disección
fuente
{_$@$er}
es dos bytes más corto.J, 9 bytes
Este es un verbo diádico que toma p y s como argumentos izquierdo y derecho. Pruébelo en línea con J.js .
Prueba de funcionamiento
Como funciona esto
Digamos que definimos asignadas las entradas izquierda y derecha del ejemplo a través de
Luego:
El tren
/:^:2~/:~
es un gancho de los verbos/:^:2~
y/:~
, por lo tanto, llamaejecuta
El adverbio
~
en/:~
es reflexivo , ya que/:
se usa monádicamente. Por lo tanto, llamandoejecuta
El adverbio
~
en/:^:2~
es pasivo , ya que el verbo/:^:2
se usa de forma diádica. Por lo tanto, llamandoejecuta
El adverbio
^:
es poder . Por lo tanto, llamandoejecuta
Poniendo todo junto, llamando
ejecuta
Cómo que las obras
Dyadic
/:
se gradúa usando , es decir,x /:y
devuelve los elementos de x , ordenados según los valores correspondientes dey
.s /: s
simplemente ordena los elementos del s .(s /: s) /: p
ordena los elementos (ordenados) de s de acuerdo con los valores correspondientes de p .La calificación dos veces esencialmente calcula los ordinales de su argumento correcto.
Por lo tanto,
(s /: s) /: (s /: s) /: p
ordena los elementos (ordenados) de s , imitando el orden de los elementos de p .fuente
Mathematica,
3227 bytesEjemplo de uso:
Intento previo:
fuente
o = Ordering; (Sort@#)[[o@o@#2]] &
Permute
! Uso muy útil de permutaciones.J, 17 bytes
Esto se evalúa como un verbo diádico (que significa binario). Se puede evocar de la siguiente manera:
Explicación
Puede que esta no sea la solución J más corta posible, pero es un enfoque novedoso.
fuente
Pyth, 10 bytes
Pruébelo en línea: demostración
Explicación
fuente
XQSQSvz
es tres bytes más corto.Pyth, 7 bytes
Este es un programa completo que espera representaciones de cadena de s y p en dos líneas. Pruébalo en línea.
Cómo funciona
fuente
Pitón 2, 51
fuente
a=sorted
tendría el mismo efecto.=
.Mathematica
56 43 3029 bytesOrdering@#2
Devuelve el orden de los números en el patrón.Ordering@Ordering@#2
da las posiciones que deben ocupar los elementos ordenados en la fuente.Sort[#][[o@o@#2]]&
devuelve la fuente en las posiciones requeridas, es decir, aquellas que tienen el mismo orden relativo que la lista de patrones.Pruebas
fuente
CJam, 8 bytes
Esta es una función anónima que espera s y p (más arriba) en la pila y empuja los s reordenados a cambio. Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
J, 13 bytes
Todavía tengo problemas para comprender la composición verbal de J, así que me siento como algunos de ellos
@
y[]
podría ser innecesario. Si algún usuario J más experimentado pudiera decirme si esto se puede comprimir, sería genial. :)El verbo se puede usar de la siguiente manera:
Explicación
fuente
/:
para deshacerse de{
y@
, por 11 bytes:/:~@]/:/:@[
/:
, pero todavía no he podido actualizar la respuesta (({~/:)&/:{[
).APL,
1712 bytesGracias a @Dennis, esto ahora es muy elegante.
Aquí hay una buena solución de 14 bytes que no utiliza doble indexación:
Desafortunadamente, no podemos indexar matrices desde trenes en APL.
fuente
Pitón 2, 48
Una gran cantidad de funciones. Esto utiliza el enfoque de traducción de elementos de muchas otras respuestas usando un diccionario.
La entrada destacada
*l
espera los patrones y la fuente en ese orden, y los convierte en una listal
.La asignación
sorted
clasifica ambas listas ydict(zip(_))
convierte un par de listas en un diccionario con claves de la primera lista que coinciden con los valores de la segunda, en orden ascendente. Por lo tanto, el resultado es que eli
elemento más grande del patrón coincide con eli
elemento más grande de la fuente.Finalmente, transformamos el patrón (
l[0]
) a través de este diccionario mapeando su.get
método.fuente
Bash + coreutils, 55
La entrada se toma como dos nombres de archivo, para la fuente y el patrón respectivamente:
fuente
R, 38 bytes
fuente
match
.Ruby, 51 bytes
fuente
Haskell, 65 bytes
Ejemplo de uso:
[-5,9,4,13,11,-6,0] # [7,-4,1,-8,4,-3,12]
->[11,-5,4,-6,9,0,13]
.Cómo funciona:
fuente
R, 37 bytes
fuente
TeaScript, 15 bytes
Esto toma la entrada como una matriz. El intérprete está actualmente fuera de servicio porque estoy colocando el nuevo y elegante intérprete
Explicación
fuente
13 9 -6 4 11 -5 0
la entrada de muestra. ??Jelly , 6 bytes, desafío de postdates de idioma
Pruébalo en línea!
Esto toma el patrón, seguido de la fuente, como dos argumentos separados.
Explicación
fuente
Haskell, 56 bytes
Define una función binaria
%
. Cada entradap
se transforma en la entrada des
con el mismo orden estadístico, es decir, rango relativo en su lista. La estadística de orden dex
inp
se encuentra contando los elementos más pequeños (sort p!!x
produce una molestiaMaybe
). El resultado se indexa ensort s
.Una
zip/lookup
solución tiene la misma longitud, excepto que daJust
números.fuente