Einführung:
Nachdem ich zwei Herausforderungen im Zusammenhang mit Regenbogen gepostet hatte: Codegolf Rainbow: Spaß mit Integer-Arrays 1 und Codegolf Rainbow: Zeichnen in Schwarzweiß 2 , wurde der folgende Kommentar von @ChrisM im ASCII ( Zeichnen in Schwarzweiß) abgegeben ) Herausforderung :
Vielleicht wissen Sie das und es ist beabsichtigt (ich weiß, dass Regenbogen auch keine Rauten oder Ascii sind und die Positionen höherer Ordnungen komplizierter werden), aber sind die Farben im 2. Regenbogen nicht umgekehrt?
Und er hat tatsächlich Recht. Wenn Sie einen doppelten Regenbogen sehen, ist der zweite tatsächlich ein Spiegelbild des ersten, sodass die Farben umgekehrt sind. Mit drei Regenbogen ist es ein doppelter Regenbogen, wobei der dritte ein Spiegelbild eines der beiden anderen ist. Und mit vier gibt es zwei Regenbogen und zwei Reflexionen davon.
Lassen Sie uns anhand dieser Tatsache eine dritte Herausforderung stellen.
Herausforderung:
Eingänge: Eine positive ganze Zahl , n
die ist >=2
, und eine Liste von ganzen Zahlen von Größe >= n+1
.
Ausgabe: Dieselbe Liste wie folgt geordnet:
- Teilen Sie zuerst die Eingabelisten in Unterlisten mit einer Größe auf
n
(wobei die nachfolgende Unterliste eine beliebige Größe im Bereich haben kann[1,n]
). - Dann machen wir Folgendes basierend auf der Anzahl der Unterlisten
m
:- Sortieren Sie die erste
m - m//2
Anzahl von Unterlisten von der niedrigsten zur höchsten (wobei//
die Ganzzahl geteilt ist). (Dh mit 6 Unterlisten werden die ersten drei vom niedrigsten zum höchsten sortiert; bei 5 Unterlisten werden die ersten drei vom niedrigsten zum höchsten sortiert.) - Sortieren Sie die letzte
m//2
Anzahl von Unterlisten vom höchsten zum niedrigsten (wobei//
die Ganzzahldivision ist). (Dh mit 6 Unterlisten werden die letzten drei vom höchsten zum niedrigsten sortiert; bei 5 Unterlisten werden die letzten beiden vom höchsten zum niedrigsten sortiert.)
- Sortieren Sie die erste
- Führen Sie alle Unterlisten zu einer einzigen Liste zusammen
Beispiele:
Eingänge: n=7
und [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Schritt 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Schritt 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Schritt 3 / Ausgang:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Eingänge: n=4
und [7,4,-8,9,3,19,0,-23,-13,13]
Schritt 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Schritt 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Schritt 3 / Ausgang:[-8,4,7,9,-23,0,3,19,13,-13]
Herausforderungsregeln:
- Der Integer-Eingang
n
ist garantiert größer als 1. - Die Größe der Integer-Liste ist garantiert größer als
n
. - Die nachfolgende Unterliste kann kleiner sein als
n
(wie in den Beispielen und Testfällen zu sehen ist). - Das E / A-Format ist in jedem vernünftigen Format flexibel. Kann eine Liste / ein Array von Ganzzahlen oder Dezimalstellen, eine durch Kommas / Leerzeichen / Zeilenumbrüche getrennte Zeichenfolge, ein Strom von Ganzzahlen usw. sein. (Die Ausgabe ist möglicherweise keine 2D-Liste von Listen wie in Schritt 2. Schritt 3, um sie wieder in eine einzelne Liste zu reduzieren ist für diese Herausforderung erforderlich.)
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln , sodass Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden dürfen. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code hinzu.
- Es wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
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]
quelle
Gelee , 9 Bytes
Probieren Sie es online aus!
quelle
Python 2 , 82 Bytes
Probieren Sie es online aus!
quelle
Japt , 10 Bytes
Probieren Sie es online aus!
quelle
05AB1E (Legacy) , 9 Bytes
Probieren Sie es online aus!
Probieren Sie es online aus! in 05AB1E (Elixir rewrite) - erwartet, dass sich die Eingabe auf dem Stapel befindet, eine Standard-E / A-Methode.
Kevin hat sich seinen eigenen 11-Byter ausgedacht, den ich auf 10 gebracht habe. Dann habe ich mir für 9 Bytes etwas anderes ausgedacht.
quelle
ô€{2äRć€R)˜
.í
. Und schönes zusätzliches Golf.JavaScript (ES6),
8281 Byte1 Byte dank @redundancy gespeichert
Nimmt Eingabe als
(list)(n)
.Probieren Sie es online aus!
quelle
a
eindimensional ist, glaube ich , Sie ersetzen könnena>[]
mita+a
überprüfen , die nicht leeren Fall und speichern 1 Byte. Wirklich clevere rekursive Strategie zum Partitionieren und Bestimmen, wann die Sortierung ebenfalls umgekehrt werden soll!