Recientemente tuve un problema que resolver en el trabajo donde tenía dos listas: una lista maestra y una lista más pequeña que contiene un subconjunto de los elementos de la lista maestra potencialmente en un orden diferente. Necesitaba reordenar la lista maestra de tal manera que los elementos del subconjunto aparecieran en el mismo orden sin cambiar el orden de los elementos que no se encuentran en la lista y mantener los elementos en la misma ubicación siempre que sea posible. De acuerdo, eso probablemente suene confuso, así que lo desglosaré:
- La lista maestra define el orden predeterminado de los elementos.
- La lista de subconjuntos define el orden relativo de ciertos elementos.
- Cuando la lista maestra tiene dos elementos desordenados de acuerdo con la lista de subconjuntos, el elemento que está más temprano en la lista maestra debe moverse al índice más temprano donde se encuentra en la ubicación correcta en relación con otros elementos dentro de la lista de subconjuntos. (es decir, inmediatamente después del artículo posterior)
Su tarea es implementar este algoritmo de reordenamiento.
Ejemplos de casos de prueba
Master: [1, 2, 3]
Subset: []
Result: [1, 2, 3]
Master: [9001, 42, 69, 1337, 420]
Subset: [69]
Result: [9001, 42, 69, 1337, 420]
Master: [9001, 42, 69, 1337, 420, 99, 255]
Subset: [69, 9001, 1337]
Result: [42, 69, 9001, 1337, 420, 99, 255]
Master: [1, 2, 3, 4, 5]
Subset: [2, 5]
Result: [1, 2, 3, 4, 5]
Master: [apple, banana, carrot, duck, elephant]
Subset: [duck, apple]
Result: [banana, carrot, duck, apple, elephant]
Master: [Alice, Betty, Carol, Debbie, Elaine, Felicia, Georgia, Helen, Ilene, Julia]
Subset: [Betty, Felicia, Carol, Julia]
Result: [Alice, Betty, Debbie, Elaine, Felicia, Carol, Georgia, Helen, Ilene, Julia]
Master: [snake, lizard, frog, werewolf, vulture, dog, human]
Subset: [snake, werewolf, lizard, human, dog]
Result: [snake, frog, werewolf, lizard, vulture, human, dog]
Master: [Pete, Rob, Jeff, Stan, Chris, Doug, Reggie, Paul, Alex]
Subset: [Jeff, Stan, Pete, Paul]
Result: [Rob, Jeff, Stan, Pete, Chris, Doug, Reggie, Paul, Alex]
Master: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Subset: [8, 1, 2, 12, 11, 10]
Result: [3, 4, 5, 6, 7, 8, 1, 2, 9, 12, 11, 10]
Master: [lol, rofl, lmao, roflmao, lqtm, smh, jk, wat]
Subset: [wat, lmao, rofl]
Result: [lol, roflmao, lqtm, smh, jk, wat, lmao, rofl]
Reglas
- Lagunas estándar, yadda yadda, E / S conveniente, bla, bla.
- Aunque los ejemplos usan números y cadenas, solo necesita admitir un tipo de elemento, ya sean enteros, cadenas o cualquier otra cosa con una semántica de igualdad bien definida, incluidas listas heterogéneas si es conveniente en su idioma.
- Puede suponer que tanto la lista maestra como la lista de subconjuntos no contienen duplicados
- Puede suponer que todos los elementos encontrados en la lista de subconjuntos se encuentran en la lista maestra
- Cualquiera de las listas puede estar vacía
- Debe, como mínimo, admitir matrices de hasta 100 elementos de largo.
- El reordenamiento puede implementarse en el lugar o mediante la creación de una nueva lista / matriz.
¡Feliz golf!
fuente
8 1 3 4 5 6 7 2 9 12 11 10
una solución válida para el penúltimo?