Introduction:
Après avoir publié deux défis liés à l'arc-en-ciel: Codegolf Rainbow: Fun with Integer-Arrays 1 et Codegolf Rainbow: Draw en noir et blanc 2 , le commentaire suivant a été fait par @ChrisM dans l'ASCII ( Draw en noir et blanc ) défi :
Peut-être que vous le savez et que c'est par conception (je sais que les arcs-en-ciel ne sont pas non plus des losanges ou des ascii, et les positions des ordres supérieurs deviennent plus compliquées), mais les couleurs ne sont-elles pas inversées dans le 2e arc-en-ciel?
Et il a en effet raison. Lorsque vous voyez un double arc-en-ciel, le second est en fait le reflet du premier, donc les couleurs sont inversées. Avec trois arcs-en-ciel, c'est un véritable arc-en-ciel double, le troisième étant le reflet de l'un des deux autres. Et avec quatre, il y a deux arcs-en-ciel et deux reflets de ceux-ci.
Alors, faisons un troisième défi connexe en utilisant ce fait.
Défi:
Entrées: Un entier positif n
qui est >=2
, et une liste d'entiers de taille >= n+1
.
Sortie: la même liste ordonnée comme suit:
- Divisez d'abord les listes d'entrée en sous-listes de taille
n
(où la sous-liste de fin peut être de n'importe quelle taille dans la plage[1,n]
). - Ensuite, nous faisons ce qui suit en fonction du nombre de sous-listes
m
:- Triez la première
m - m//2
quantité de sous-listes de la plus faible à la plus élevée (où//
est la division entière). (Autrement dit, avec 6 sous-listes, les trois premières seront triées du plus bas au plus élevé; avec 5 sous-listes, les trois premières seront triées du plus bas au plus élevé.) - Triez le dernier
m//2
nombre de sous-listes du plus élevé au plus bas (où//
est le nombre entier). (Autrement dit, avec 6 sous-listes, les trois dernières seront triées du plus élevé au plus bas; avec 5 sous-listes, les deux dernières seront triées du plus élevé au plus bas.)
- Triez la première
- Fusionner toutes les sous-listes pour former à nouveau une seule liste
Exemples:
Entrées: n=7
et [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Étape 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Étape 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Étape 3 / Sortie:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Entrées: n=4
et [7,4,-8,9,3,19,0,-23,-13,13]
Étape 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Étape 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Étape 3 / Sortie:[-8,4,7,9,-23,0,3,19,13,-13]
Règles du défi:
- L'entrée entière
n
est garantie supérieure à 1. - La taille de la liste entière est garantie être supérieure à
n
. - La sous-liste de fin peut être plus petite que
n
(comme on peut le voir dans les exemples et les cas de test). - Le format d'E / S est flexible dans n'importe quel format raisonnable. Peut être une liste / un tableau d'entiers ou de décimales, une chaîne délimitée par des virgules / espaces / sauts de ligne, un flux d'entiers, etc. (La sortie peut ne pas être une liste 2D de listes comme l'étape 2. Étape 3 pour l'aplatir de nouveau en une seule liste est requis pour ce défi.)
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
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]