Herausforderung
Sortieren Sie die Namen anhand einer Liste eindeutiger Farbnamen in der Reihenfolge, in der sie zuerst in Josephs Amazing Technicolor Dreamcoat erscheinen .
Beispiel
Input: green, blue, red, brown
Output: red, green, brown, blue
Die vollständige Liste der Farben in der angegebenen Reihenfolge lautet:
1. red
2. yellow
3. green
4. brown
5. scarlet
6. black
7. ochre
8. peach
9. ruby
10. olive
11. violet
12. fawn
13. lilac
14. gold
15. chocolate
16. mauve
17. cream
18. crimson
19. silver
20. rose
21. azure
22. lemon
23. russet
24. grey
25. purple
26. white
27. pink
28. orange
29. blue
Oder als eine Reihe von Zeichenfolgen:
["red","yellow","green","brown","scarlet","black","ochre","peach","ruby","olive","violet","fawn","lilac","gold","chocolate","mauve","cream","crimson","silver","rose","azure","lemon","russet","grey","purple","white","pink","orange","blue"]
Regeln
- Sie können Eingaben auf jede vernünftige und bequeme Weise vornehmen (z. B. durch ein Array von Zeichenfolgen, eine durch Trennzeichen getrennte Zeichenfolge oder einzelne Zeichenfolgen), sofern dies nach unseren Standard-E / A-Regeln zulässig ist. Geben Sie jedoch in Ihrer Antwort Ihre Eingabemethode an.
- Sie können dasselbe für Ihre Ausgabe tun.
- Die Eingabe enthält immer nur Farben aus der obigen Liste.
- Ihre Lösung sollte in der Lage sein, leere Eingaben zu verarbeiten.
- Sie können wählen, ob alle Wörter in der Eingabe konsistent in Groß-, Klein- oder Titelbuchstaben geschrieben werden sollen, die Schreibweise Ihrer Ausgabe muss jedoch mit der Eingabe übereinstimmen.
- Dies ist Codegolf, daher gewinnt die niedrigste Bytezahl in jeder Sprache.
- Standardlücken sind wie immer verboten.
Testfälle
Input: []
Output: []
Input: ["green", "blue", "red", "brown"]
Output: ["red", "green", "brown", "blue"]
Input: ["gold", "grey", "green"]
Output: ["green", "gold", "grey"]
Input: ["ruby","yellow","red","grey"]
Output: ["red", "yellow", "ruby", "grey"]
Input: ["gold", "green", "fawn", "white", "azure", "rose", "black", "purple", "orange", "silver", "ruby", "blue", "lilac", "crimson", "pink", "cream", "lemon", "russet", "grey", "olive", "violet", "mauve", "chocolate", "yellow", "peach", "brown", "ochre", "scarlet", "red"]
Output: ["red", "yellow", "green", "brown", "scarlet", "black", "ochre", "peach", "ruby", "olive", "violet", "fawn", "lilac", "gold", "chocolate", "mauve", "cream", "crimson", "silver", "rose", "azure", "lemon", "russet", "grey", "purple", "white", "pink", "orange", "blue"]
code-golf
array-manipulation
Zottelig
quelle
quelle
Antworten:
PowerShell ,
26215515112712595 ByteProbieren Sie es online!
Naiver Ansatz.PowerShellsort-object
kann anhand eines Skriptblocks sortieren, der für jedes Objekt ausgeführt wird. Hier erhalten wir einfach.IndexOf()
die Farbe aus einer Zeichenfolge, die jeder Farbe einen numerischen Wert zuweist und dann basierend auf diesen Zahlen sortiert. Die Zeichenfolge besteht aus dem vierten und ersten Buchstaben jeder Farbe, um die Eindeutigkeit zu gewährleisten. Die Ausgabe ist implizit.-4 Bytes dank Shaggy.
-2 Bytes dank mazzy.
Satte -30 Bytes dank KGlasier.
quelle
green grey
die in der richtigen alphabetischen Reihenfolge vorliegt..IndexOf()
es zurückkommt,-1
wenn der String nicht gefunden wird, wasred
in der richtigen Reihenfolge sortiert wird . Vielen Dank!JavaScript (SpiderMonkey) ,
106 105104 Bytes"Wenn Sie Zweifel haben, haben Sie nur den blutigen Input."
Probieren Sie es online!
quelle
%99%55
ist dies nicht besser als%123%55
bei diesem Ansatz). Es ist also sicherlich nicht optimal. Vielleicht probiere ich später etwas Feineres aus.Gelee , 28 Bytes
Probieren Sie es online!
Wie es funktioniert
µ
wandelt alles nach links in eine monadische Kette um, dieÞ
über das Eingabearray abgebildet und die Eingabe nach den generierten Werten sortiert.“½Ṗ©cƘʂẒẹMMỤẓHP’
Setzt den Rückgabewert auf 176073885534954276199526358143331.Œ?
“ðÑþQ’
ergibt 391695582;,
stellt es der Permutation voran. Dannḥ
c ompute Jelly 391695582 th Hashfunktion, Abbilden der resultierenden Eimer zu den ganzen Zahlen der Permutation.Die magische Konstante 391695582 wurde gefunden Jelly utils .
quelle
Python 3 , 93 Bytes
Probieren Sie es online!
Liest jede Farbe als Base-36
int
. Die Module wurden brutal gezwungen und es wurde ein willkürlicher Versatz unter den 19 gewählt, für den keine Flucht erforderlich war.quelle
Powershell,
124120124119118102 BytesProbieren Sie es online!
Erläuterung:
Die Datenzeichenfolge enthält die ersten signifikanten Buchstaben der Farbetiketten in absteigender Reihenfolge. Mit Ausnahme des
Grey
Etiketts -G*y
ist kürzer.-csplit'(?=[A-Z])'
Teilt die Datenzeichenfolge in das Array auf(blu,Or,Pi,W,Pu,G*y,Rus,Le,A,Ro,Si,Cri,Cr,M,C,Go,L,F,V,Ol,Ru,P,O,Bl,S,B,G,Y,R)
|%{$c-like"$_*"}
Ordnet das Zeichenfolgenarray dem Array von boolean zu. WobeiTrue
"ein Farbetikett von dieser Zeichenfolge ausgeht" (Groß- / Kleinschreibung wird nicht berücksichtigt, csplit - Groß- / Kleinschreibung wird berücksichtigt. Siehe Dokument ).sort{}
Sortiert die Farbetiketten nach den Arrays von Boolean in aufsteigender Reihenfolge .Die Sortierung nach Array ist ein sehr interessantes Feature in der PowerShell. In diesem Skript haben alle Arrays dieselbe Länge und enthalten nur Boolesche Werte. Diese Sortierung wird in der lexographischen Reihenfolge der Booleschen Arrays durchgeführt.
Daher kann die Zeichenfolge Ein-Buchstaben-Abkürzungen für die letzten Bezeichnungen enthalten. Wenn sich am Anfang des Arrays eine Übereinstimmung befindet, haben die Übereinstimmungen am Ende keine Auswirkung.
Wo
T
isttrue
und-
istfalse
.Testskript:
Ausgabe:
quelle
This site can’t be reached
Fehler. Es tut uns leid.Ich werde die Saitenkomprimierung in einer Weile verbessern
Japt ,
887871 BytesProbieren Sie es online!
quelle
Wolfram Language
255 213199 BytesVierzehn Bytes wurden von Dennis gespeichert, der die "Markierungen" vermieden, indem er Symbole anstelle von Zeichenfolgen verwendete.
Probieren Sie es online!
quelle
Python 2 , 186 Bytes
Probieren Sie es online!
Findet alle Übereinstimmungen für progressive Zeichensubstrings (Beispiel: "green" sucht nach "g", "gr", "gre", "gree" und "green") in der Bezeichnerzeichenfolge und behält den maximalen Index bei. "rot" steht immer an erster Stelle, anf find () gibt -1 für fehlende Übereinstimmungen zurück, daher gibt es keinen speziellen Bezeichner für rot.
Sobald die Farben in (Index-, Farb-) Paare umgewandelt wurden, sortieren Sie das Array nach dem ersten Element des Paares und verwerfen Sie dann das erste Element jedes Paares.
quelle
Python 3 , 130 Bytes
Probieren Sie es online!
quelle
ca
ein Teilcca
für Schokolade oof ist.C # (Visual C # Interactive Compiler) ,
321219210161159138 ByteProbieren Sie es online!
-3 Bytes dank Shaggy, -18 dank TheLethalCoder
Nimmt Eingaben als ein
List<string>
, gibt ein zurückIOrderedEnumerable<string>
Das funktioniert so, dass die Liste nach dem Index jeder Zeichenfolge in der ursprünglichen Zeichenfolge sortiert wird. Die ursprüngliche Zeichenfolge hat alle Farben mit Ausnahme von Grau, die in die ersten drei Buchstaben umgewandelt wurden. Grau ist nicht da, da Grün und Grau Mehrdeutigkeiten verursachen würden. Rot ist da auch nicht
IndexOf
-1 zurückgegeben wird, wenn die Zeichenfolge nicht angezeigt wird.Kürzere Version mit IOrderedEnumerable als Eingabe, 137 Byte
Nutzt die Tatsache, dass
ThenBy
1 Byte kürzer ist alsOrderBy
, arbeitet aberThenBy
nur mitIOrderedEnumerable
s.Probieren Sie es online!
quelle
red
aus Ihrem Nachschlag Zeichenfolge und ersetzen68
mit65
zu speichern 3 Bytes. Auf meinem Handy habe ich es also noch nicht vollständig getestet.n=>n.OrderBy(a=>a!="grey"?"redyelgrebroscablaochperuboliviofawlilgolchomaucrecrisilrosazulemruspurwhipinorablu".IndexOf(a.Substring(0,3)):68);
. Sie müssen jedoch dieusing
s in Ihre Byteanzahl aufnehmen, damit sie ausgeführt werden können. Sie können den Namespace-Trick verwenden , um die erforderliche Anzahl zu verkürzen.namespace System.Linq{}
oder was auch immer Sie gewählt hätten.Charcoal ,
69686356 BytesProbieren Sie es online!Link ist eine ausführliche Version des Codes. Erläuterung:
Nimm den komprimierten String
edyeeebrscckhrpeubivvifa99gohomaamrisiosazemuseypuwhpiorlu
und durchlaufen Sie jede Teilzeichenfolge der Länge 2.Geben Sie für jede Teilzeichenfolge die Eingabezeichenfolgen aus, die diese Teilzeichenfolge enthalten, sofern dies nicht der
99
Fall ist. Suchen Sie in diesem Fall nachlil
. (lilac
ist die einzige Farbe, die keine eindeutige Unterzeichenfolge mit zwei Buchstaben hat;olive
enthältli
;silver
enthältil
undblack
enthältlac
.fawn
undazure
kann mit nur einem Buchstaben erkannt werden, aber das hilft hier nicht.)quelle
Pyth, 66 Bytes
Probieren Sie es hier online aus oder überprüfen Sie alle Testfälle auf einmal hier .
Die Farben in der Liste können eindeutig identifiziert werden, indem die Zeichen am Index verwendet werden
0
und3
eine modulare Indizierung vorausgesetzt wird. Daraus ergibt sich folgende Zuordnung:Vollständige Erklärung:
quelle
05AB1E , 48 Bytes
Gleiche Lösung wie die meisten anderen Antworten. Ich werde versuchen, es später von hier aus zu spielen.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
Sehen Sie diese 05AB1E Spitze (Abschnitt Wie Kompresse Strings nicht Teil des Wörterbuchs? ) Zu verstehen , wie
.•Aå₂мÕh∊þèmvƶ\kΛ1YŠíJ>J#θ₁2©€,Ù{η¦ù-•
ist"rrylgebwsrbcorpcryovvlfnlagdccmvcacmsvrearlorsgyppwtpkonbe"
.quelle