Введение:
После того, как я опубликовал две задачи, связанные с радугой: Codegolf Rainbow: Fun с целочисленными массивами 1 и Codegolf Rainbow: Draw in Black-and-White 2 , @ChrisM сделал следующий комментарий в ASCII ( Draw in черно-белый ) вызов :
Может быть, вы это знаете, и это по замыслу (я знаю, что радуги тоже не ромбы и не аски, а позиции высших порядков усложняются), но разве цвета не меняются во 2-й радуге?
И он действительно прав. Когда вы видите двойную радугу, вторая на самом деле является отражением первой, поэтому цвета меняются местами. С тремя радугами это настоящая двойная радуга, а третья является отражением одной из двух других. А с четырьмя - две радуги и два их отражения.
Итак, давайте сделаем третью связанную проблему, используя этот факт.
Вызов:
Входы: Положительное целое число , 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, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
Тестовые случаи:
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]
источник
Желе , 9 байт
Попробуйте онлайн!
источник
Python 2 , 82 байта
Попробуйте онлайн!
источник
Japt , 10 байт
Попробуйте онлайн!
источник
05AB1E (legacy) , 9 байтов
Попробуйте онлайн!
Попробуйте онлайн! в 05AB1E (перезапись Elixir) - ожидает ввода в стеке, метод ввода / вывода по умолчанию.
Кевин придумал свой собственный 11-байтовый код, который я имел обыкновение получать до 10. Затем я придумал что-то еще для 9 байтов.
источник
ô€{2äRć€R)˜
.í
. И приятный дополнительный гольф.JavaScript (ES6),
8281 байтСохранено 1 байт благодаря @redundancy
Принимает вход как
(list)(n)
.Попробуйте онлайн!
источник
a
одномерный, я полагаю , вы можете заменитьa>[]
с ,a+a
чтобы проверить , не пустой случай и сохранить 1 байт. Действительно умная стратегия восстановления и разбиения, а также определения, когда нужно изменить сортировку!