Gracias a la comunidad PPCG, Santa ha logrado refabricar todos sus regalos y, después de la línea de montaje, ¡los regalos ya están listos para ser trasladados a los muelles de transporte!
Cada uno de los muelles de transporte de Santa solo tiene una gama de tamaños actuales porque los trineos de transporte están especializados para un tamaño específico (cualquier encendedor y sería un desperdicio, más pesado y el trineo no podría manejar la carga). Por lo tanto, necesita que lo ayudes a tomar sus regalos y ordenarlos en los muelles de transporte correctos.
Desafío
Dada una lista y los rangos del muelle de transporte, organice los regalos de manera estable en el orden correcto.
Tomemos esto por ejemplo: los regalos son [5, 3, 8, 6, 2, 7]y los rangos de acoplamiento son [[1, 5] and [6, 10]].
Los regalos 5, 3y 2entran en el primer muelle y los regalos 8, 6y 7entran en el segundo muelle. Esto se puede mostrar como [[5, 3, 2], [8, 6, 7]]. Esta lista estará más cerca de ser ordenada que la entrada, pero stablysignifica que dentro de cada muelle, el orden de los regalos debe ser el mismo que el orden de la entrada (de lo contrario, podría ordenar toda la lista).
Su salida final para este caso sería [5, 3, 2, 8, 6, 7](como una lista plana).
Especificaciones de formato
Se le dará entrada como una lista plana de números enteros y una lista de rangos en cualquier formato razonable (por ejemplo, el rango para el caso anterior podría ser dado como [[1, 5], [6, 10]], [1, 5, 6, 10], o [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]). Su salida debe ser una lista plana de enteros en cualquier formato razonable.
La entrada puede contener valores duplicados; en este caso, debe devolver todas las instancias de ellos. Todos los tamaños actuales estarán exactamente en un rango de tamaño, y puede suponer que los rangos nunca se superpondrán. Puede haber huecos en los rangos siempre que se cubran todos los tamaños actuales.
Reglas
- Se aplican lagunas estándar
- Este es el código de golf , por lo que gana la respuesta más corta en bytes
- No se aceptarán respuestas.
- Puede suponer que no habrá rangos vacíos (
[7, 4]no sería válido porque los rangos aumentan)
Casos de prueba
[1, 2, 3, 4, 5, 6, 7] ; [[1, 3], [4, 7]] => [1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7] ; [[4, 7], [1, 3]] => [4, 5, 6, 7, 1, 2, 3]
[7, 3, 5, 4, 6, 1, 2] ; [[1, 3], [4, 5], [6, 7]] => [3, 1, 2, 5, 4, 7, 6]
[4, 7, 6, 3, 5, 2, 1] ; [[1, 4], [5, 7]] => [4, 3, 2, 1, 7, 6, 5]
[1, 1, 3, 3, 6, 4, 7] ; [[1, 4], [6, 7]] => [1, 1, 3, 3, 4, 6, 7]
Nota: Me inspiré para esta serie de desafíos de Advent Of Code . No estoy afiliado a este sitio
Puede ver una lista de todos los desafíos de la serie mirando la sección 'Vinculados' del primer desafío aquí .
fuente

Respuestas:
Haskell , 26 bytes
Pruébalo en línea! Ejemplo de uso:
[1,2,3,4,5,6,7] # [[1,2,3],[4,5,6,7]]rendimientos[1,2,3,4,5,6,7].fuente
Jalea , 4 bytes
Pruébalo en línea!
Toma la entrada como lista actual, rangos completos.
fuente
fþFfunciona en Jelly, por 3 bytes . El crédito va a Adnan .Mathematica, 39 bytes
-22 bytes de JungHwan Min
-4 bytes de Martin
Pruébalo en línea!
fuente
Rangesimplemente tomando los rangos expandidos como entrada.Pyth , 5 bytes
Pruébalo aquí!
Pyth , 10 bytes
Pruébalo aquí!
Cómo trabajan ellos
s.gx} LkQ1E | Programa completo .g E | Agrupe los elementos en la segunda entrada por ... } LkQ | Asigne la primera entrada y verifique si el elemento actual está en la lista. x 1 | Tome el índice del primer elemento de verdad. s | Aplanar.Primero toma los muelles, con todos los enteros en los rangos, y luego los regalos en una nueva línea.
fuente
Python 2 ,
4946 bytesgracias a @HyperNeutrino por -3 bytes
Pruébalo en línea!
Sin golf
Pruébalo en línea!
fuente
05AB1E , 3 bytes
Pruébalo en línea! (gracias a Adnan por informarme que
δexiste, -1 byte)Cómo funciona
δØ | Programa completo δ | Vectoriza dos veces el siguiente comando (algo así como un producto externo). à | Lista de intersección. Como se trata de una diada, la primera entrada es automáticamente El | solía llenar el argumento faltante (hasta donde yo sé). ˜ | Aplanar.fuente
€Ã˜no parece funcionar.€Ã˜falla porqueÃtoma dos argumentos y€espera una función con un argumento, por lo que regresa en su[[]]lugar (creo que es un error), por lo que˜se aplanará y regresará[].εSin embargo, funciona de manera diferente. Para cada elemento del elemento superior, crea una nueva pila y luego devuelve la parte superior de cada nueva pila, por lo que cuando no hay suficientes elementos para una función, toma una entrada implícita.δØ¿ es lo que estás buscando?Retina ,
3736 bytesPruébalo en línea! Toma información como una lista de regalos en la primera línea y una lista de rangos en la segunda línea; el enlace incluye un encabezado para dividir los casos de prueba en el formato deseado. Editar: Guardado 1 byte gracias a @MartinEnder. Explicación: La primera etapa coincide con los regalos y encuentra el muelle correspondiente. Los regalos se ordenan por la subcadena desde el inicio de la línea hasta el
[, agrupando los regalos por muelle. La segunda etapa luego elimina los muelles.fuente
Aliste , 3 bytes
Pruébalo en línea!
Cómo funciona
fuente
APL + WIN, 29 bytes
Solicita la entrada de pantalla para los enteros y rangos. Los enteros como una lista plana y los rangos como un vector anidado, por ejemplo, el caso 3:
Explicación:
fuente
C ++, 127 bytes
Tome la entrada como dos matrices representadas por pares de punteros
[start, end).Pruébalo en línea!
fuente
[&](int a)->int{a=a>=lugar de[&](int a){return a>=no guarda ningún byte. /#import<algorithm>puede ser#import<regex>, al menos en TIO. Descubrí que después de buscar exhaustivamente ("búsqueda binaria manual") todos los encabezados enumerados en esta página y esta es la más corta. / Además, +1 de mi parte.J, 15 bytes
Toma la entrada como argumento izquierdo y los rangos como argumento derecho . Los rangos son listas en recuadro de los rangos completos.
Por ejemplo, para el primer rango:
Pruébalo en línea!
Explicación
fuente
J ,
2624 bytes2 bytes gracias a cole
Cómo funciona:
El argumento izquierdo contiene los rangos.
-&1 0"1@[disminuye el límite inferior de cada rango en 1I."1]comprueba en qué rango se ajusta cada presente1=¿Está en el rango correcto?]<@#~copia y encajona los regalos que están en el rango actual;- raze (unboxing)Pruébalo en línea!
fuente
(0 4,:_3 _1) f _2 _1 0 1 2)R ,
113485541 bytesUna versión anterior no ordenaba correctamente los objetos cuando los muelles no estaban en orden creciente.
Pruébalo en línea!
Toma
Dcomo una lista de vectores de rangos, es decir,list(4:7,1:3)sería[[4, 7], [1, 3]].Probablemente la ingenua respuesta a la que debería haber llegado hace años; imprime en stdout.
fuente
Japt , 6 bytes
Intentalo
Explicación
Entrada implícita de array
U(presentes) y 2d-arrayV(rangos completos). Ordena (ñ) los regalos pasándolos a través de una función (@) que obtiene el índice del primer elemento (b)Vque contiene (ø) el presente actual (X).fuente
Python 2,
9785 bytes-11 bytes de ovs
-1 byte del Sr. Xcoder
Pruébalo en línea!
Ordena la lista usando una lambda recursiva como clave. Explicación
próximamente ™ acontinuación.Explicación:
fuente
Javascript ES6,
534745 bytesPruébalo en línea!
fuente
PowerShell , 37 bytes
Pruébalo en línea!
Toma
$acomo una matriz literal de los presentes y$bcomo una matriz de matrices, cada una de las cuales es el rango completo (por ejemplo, en@(1,2,3,4,5)lugar de@(1,5)). Luego hacemos un ciclo sobre cada elemento$bcon|%{...}. En el interior, necesitamos establecer un asistente$ipara que sea el elemento actual, luego usar unaWhere-Objectcláusula en contra$apara extraer solo aquellos elementos que son-inla$bmatriz actual .Esos quedan en la tubería y la salida es implícita. Dado que el comportamiento predeterminado de
Write-Outputinserta una nueva línea entre los elementos de la matriz, eso es lo que obtenemos. Aquí hay una versión ligeramente modificada que se-joinedita mediante comas en lugar de una nueva línea, solo para mostrar las diferencias.fuente
Rojo , 73 bytes
Pruébalo en línea!
fuente
C # (.NET Core) , 50 + 18 bytes
+18 bytes desde
Se necesita una colección para regalos y una colección de matrices para muelles.
Pruébalo en línea!
fuente
Lote de Windows (CMD),
9079 bytesUtilice el formato de fin de línea LF. Cada carácter de fin de línea se puede contar como 1 byte.
Sin TIO (porque TIO usa Linux)
Tome la lista de los argumentos de la línea de comandos, y los rangos de
stdin.Por ejemplo, si se ejecuta el programa (suponga que el archivo se llama
r1.cmd)y con
stdinentrada, el programa saldrá a
stderrformato(corresponde a la secuencia de salida
3 1 2 5 4 7 6)Explicación:
Código no protegido (con la interacción habilitada si
truese pasa como argumento 1; solicite la listastdin, usegotopara evitar el desbordamiento de la pila; en realidad, acabo de intentar ejecutar un script que se llama a sí mismo más de 70000 veces sin ver ningún problema, así que supongo que debería ser bastante seguro):fuente
(%*). Una vez hecho esto, puede usarlo%0 %*para reiniciar el script después de procesar cada rango. (En realidad acabé con una cuenta de bytes más grande porque he usado la versión interactiva con los detalles agradables&&,exit/byechocomo punto de partida.)%1pero las comillas"hacen que el espacio no funcione como separadores, así que terminé usandoset /p.$~1...Limpio , 59 bytes
Pruébalo en línea!
Toma dos listas, devuelve una lista.
fuente
Wolfram Language (Mathematica) , 34 bytes
Pruébalo en línea!
es elFunctionoperadorEsta es una función curry sin nombre que debe llamarse primero con la lista de rangos de acoplamiento (expandidos) y luego con la lista de regalos. Por ejemplo, si asigna la función a
f:La lista de regalos simplemente ordenada por la posición de primer nivel del valor en la lista de rangos de acoplamiento. Necesitamos ajustar la
SortByfunción en una lista para que el ordenamiento sea estable.fuente
Julia 0.6 ,
3130 bytesPruébalo en línea!
Redefine al
%operador y mapea la intersección establecida∩()sobre los muellesdmanteniendo el orden y la multiplicidad del primer ingreso, la lista de regalosp.vcatcon la entrada expandida a múltiples argumentos a través de...aplana la matriz anidada resultante.Editar, -1Byte: Lista de comprensión en lugar de
map().fuente