Introducción:
Después de publicar dos desafíos relacionados con el arco iris: Codegolf Rainbow: Fun with Integer-Arrays 1 y Codegolf Rainbow: Draw in Black-and-White 2 , @ChrisM hizo el siguiente comentario en ASCII ( Draw in Black-and-White) ) desafío :
Tal vez lo sepas y es por diseño (sé que los arcoíris no son rombos o ascii, y las posiciones de las órdenes superiores se vuelven más complicadas), pero ¿no se invierten los colores en el segundo arcoíris?
Y de hecho tiene razón. Cuando ves un arcoíris doble, el segundo es en realidad un reflejo del primero, por lo que los colores se invierten. Con tres arcoíris, es un arcoíris doble real, siendo el tercero un reflejo de uno de los otros dos. Y con cuatro, hay dos arcoiris y dos reflejos de ellos.
Entonces, hagamos un tercer desafío relacionado usando ese hecho.
Desafío:
Entradas: un entero positivo n
que es >=2
, y una lista de enteros de tamaño >= n+1
.
Salida: la misma lista ordenada de la siguiente manera:
- Primero divida las listas de entrada en sublistas de tamaño
n
(donde la sublista final podría ser de cualquier tamaño en el rango[1,n]
). - Luego hacemos lo siguiente en función de la cantidad de sublistas
m
:- Ordene la primera
m - m//2
cantidad de sublistas de menor a mayor (donde//
está la división entera). (Es decir, con 6 sublistas, las tres primeras se ordenarán de menor a mayor; con 5 sublistas, las tres primeras se ordenarán de menor a mayor). - Ordene la última
m//2
cantidad de sublistas de mayor a menor (donde//
está la división entera). (Es decir, con 6 sublistas, las tres últimas se ordenarán de mayor a menor; con 5 sublistas, las dos últimas se ordenarán de mayor a menor).
- Ordene la primera
- Combine todas las sublistas juntas para formar una sola lista nuevamente
Ejemplos:
Entradas: n=7
y [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Paso 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Paso 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Paso 3 / Salida:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Entradas: n=4
y [7,4,-8,9,3,19,0,-23,-13,13]
Paso 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Paso 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Paso 3 / Salida:[-8,4,7,9,-23,0,3,19,13,-13]
Reglas de desafío:
- Se
n
garantiza que la entrada entera sea mayor que 1. - Se garantiza que el tamaño de la lista de enteros será mayor que
n
. - La sublista final puede ser menor que
n
(como se puede ver en los ejemplos y casos de prueba). - El formato de E / S es flexible en cualquier formato razonable. Puede ser una lista / matriz de enteros o decimales, una cadena delimitada por comas / espacios / líneas nuevas, una secuencia de enteros, etc. se requiere para este desafío).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
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]
fuente
Jalea , 9 bytes
Pruébalo en línea!
fuente
Python 2 , 82 bytes
Pruébalo en línea!
fuente
Japt , 10 bytes
Pruébalo en línea!
fuente
05AB1E (heredado) , 9 bytes
Pruébalo en línea!
Pruébalo en línea! en 05AB1E (reescritura de elixir) : espera que la entrada esté en la pila, un método de E / S predeterminado.
A Kevin se le ocurrió su propio 11 bytes que solía llegar a 10. Luego se me ocurrió algo más para 9 bytes.
fuente
ô€{2äRć€R)˜
.í
. Y bonito golf adicional.JavaScript (ES6),
8281 bytesGuardado 1 byte gracias a @redundancy
Toma entrada como
(list)(n)
.Pruébalo en línea!
fuente
a
es unidimensional, creo que se puede sustituira>[]
cona+a
para comprobar el caso que no esté vacía y ahorro 1 byte. ¡Una estrategia recurrente realmente inteligente para particionar y determinar cuándo revertir el ordenamiento, también!