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 pla 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/:^:2se 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 /:ydevuelve los elementos de x , ordenados según los valores correspondientes dey.s /: ssimplemente ordena los elementos del s .(s /: s) /: pordena 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) /: pordena 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
XQSQSvzes 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=sortedtendría el mismo efecto.=.Mathematica
56 43 3029 bytesOrdering@#2Devuelve el orden de los números en el patrón.Ordering@Ordering@#2da 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
*lespera los patrones y la fuente en ese orden, y los convierte en una listal.La asignación
sortedclasifica 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 elielemento más grande del patrón coincide con elielemento más grande de la fuente.Finalmente, transformamos el patrón (
l[0]) a través de este diccionario mapeando su.getmé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 0la 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 entradapse transforma en la entrada descon el mismo orden estadístico, es decir, rango relativo en su lista. La estadística de orden dexinpse encuentra contando los elementos más pequeños (sort p!!xproduce una molestiaMaybe). El resultado se indexa ensort s.Una
zip/lookupsolución tiene la misma longitud, excepto que daJustnúmeros.fuente