Нещодавно у мене виникла проблема вирішення на роботі, де у мене було два списки: головний список та менший список, який містить підмножину елементів у головному списку, потенційно в іншому порядку. Мені потрібно було змінити основний список таким чином, щоб елементи в підмножині відображалися в тому самому порядку, не змінюючи порядок елементів, які не знайдені в списку, і зберігаючи елементи в тому самому місці, коли це можливо. Гаразд, це, мабуть, звучить заплутано, тому я зламаю це:
- Основний список визначає порядок елементів за замовчуванням.
- Список підмножини визначає відносний порядок певних елементів.
- Якщо основний список містить два елементи не в порядку відповідно до списку підмножин, елемент, який знаходиться раніше в головному списку, повинен бути переміщений до самого раннього індексу, де він знаходиться в правильному розташуванні відносно інших елементів у списку підмножин. (тобто відразу після наступного пункту)
Ваше завдання - реалізувати цей алгоритм переупорядкування.
Приклади тестових випадків
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]
Правила
- Стандартні лазівки, yadda yadda, зручні введення-виведення, бла-бла.
- Незважаючи на те, що в прикладах використовуються числа та рядки, вам потрібно підтримувати лише один тип елемента, будь то цілі числа, рядки чи щось інше з чітко визначеною семантикою рівності, включаючи неоднорідні списки, якщо це зручно для вашої мови.
- Ви можете припустити, що і основний, і список підмножин не містять дублікатів
- Ви можете припустити, що всі елементи, знайдені у списку підмножин, знаходяться у головному списку
- Будь-який список може бути порожнім
- Ви повинні, як мінімум, підтримувати масиви довжиною до 100 елементів.
- Переупорядкування може бути здійснено на місці або шляхом створення нового списку / масиву.
Щасливого гольфу!
8 1 3 4 5 6 7 2 9 12 11 10є правильним рішенням другого до останнього?