Вступ:
Після того як я опублікував два виклики, пов’язані з веселкою: Codegolf Rainbow: Fun with Integer-Arrays 1 та Codegolf Rainbow: Draw in Black-White 2 , наступний коментар зробив @ChrisM в ASCII ( Малюємо чорно-білим ) виклик :
Можливо, ви це знаєте, і це за дизайном (я знаю, що веселки теж не ромби чи асції, а позиції вищих ордерів ускладнюються), але чи не кольори перетворені у другій веселці?
І він справді правий. Коли ви бачите подвійну веселку, друга насправді є відображенням першої, тому кольори зворотні. З трьома веселками - це фактична подвійна веселка, третя - відображення однієї з двох інших. І з чотирма є дві веселки, і два відбиття цих.
Отже, давайте зробимо третій пов'язаний виклик, використовуючи цей факт.
Виклик:
Введення: додатне ціле число, n
яке є >=2
, і список цілих чисел розміру >= n+1
.
Вихід: той самий список упорядкований так:
- Спочатку розділіть вхідні списки на підсписки за розміром
n
(де підсумковий список може бути будь-якого розміру в діапазоні[1,n]
). - Тоді ми робимо наступне, виходячи з кількості підсписів
m
:- Сортуйте першу
m - m//2
кількість під-списків від найнижчої до найвищої (де//
є цілочисельне ділення). (Тобто з 6 підсписів перші три будуть відсортовані від найнижчого до найвищого; з 5 підсписів кулак три буде відсортований від найнижчого до найвищого.) - Сортуйте останню
m//2
кількість підсписів від найвищої до найнижчої (де//
ціле ділення). (Тобто з 6 підсписів останні три будуть відсортовані від найвищої до найнижчої; з 5 підсписів останні два будуть відсортовані від найвищої до найнижчої.)
- Сортуйте першу
- Об’єднайте всі підсписи разом, щоб знову сформувати єдиний список
Приклади:
Введення: n=7
та [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Крок 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Крок 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Крок 3 / Вихід:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Введення: n=4
та [7,4,-8,9,3,19,0,-23,-13,13]
Крок 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Крок 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Крок 3 / Вихід:[-8,4,7,9,-23,0,3,19,13,-13]
Правила виклику:
n
Гарантовано, що цілий вхід буде більшим, ніж 1.- Гарантовано, що розмір цілого списку буде більшим, ніж
n
. - Підсумковий список може бути меншим, ніж
n
(як це видно в прикладах та тестових випадках). - Формат вводу / виводу є гнучким у будь-якому розумному форматі. Це може бути список / масив цілих чисел або десяткових знаків, рядок з комою / пробілом / рядком з обмеженою лінією, потік цілих чисел тощо (Вихід може бути не двовимірним списком списків, як крок 2. Крок 3, щоб повернути його назад в єдиний список потрібно для цього виклику.)
Загальні правила:
- Це є код-гольф, тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам з кодовим гольфом відштовхувати вас від публікації відповідей з мов, що не кодують гольф. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу return. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також настійно рекомендується додавати пояснення до своєї відповіді.
Тестові приклади:
Inputs: n=7 and [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Output: [-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Inputs: n=4 and [7,4,-8,9,3,19,0,-23,-13,13]
Output: [-8,4,7,9,-23,0,3,19,13,-13]
Inputs: n=2 and [7,-3,1]
Output: [-3,7,1]
Inputs: n=3 and [1,6,99,4,2]
Output: [1,6,99,4,2]
Inputs: n=2 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,3,9,-5,-5,-5,11,4,12,9,-2,4,0,10,1,11]
Inputs: n=3 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,9,-5,-5,3,-5,4,11,12,9,-2,4,1,0,11,10]