Die Herausforderung besteht darin, ein Programm zu erstellen, das eine Liste von Wörtern sortiert, nur dass die Wörter in der Reihenfolge eines zufällig gegebenen Alphabets sein müssen.
Ihr Programm akzeptiert eine durch Kommas getrennte Zeichenfolge und ein neues Alphabet.
Ihr Programm gibt jedes Wort auf die gleiche Weise in der neuen sortierten Reihenfolge aus.
Beispiel:
Eingang:
home,oval,cat,egg,network,green bcdfghijklmnpqrstvwxzaeiouy
Ausgabe:
cat,green,home,network,egg,oval
Dies ist ein Code-Golf , der Gewinner ist also die Person mit dem kürzesten Programm.
Dies ist meine erste Herausforderung, daher sind Verbesserungen der Frage / Herausforderung willkommen.
Sort by custom alphabet
oder etwas kreativeres?Antworten:
CJam,
261917 BytesProbieren Sie es online aus.
Testfall
Wie es funktioniert
quelle
Bash + Coreutils, 37 Bytes
Ausgabe:
quelle
Pyth , 19 Zeichen
Prüfung:
Erläuterung:
Im Wesentlichen werden die Chunks mit einem Schlüssel aus der Liste der Indizes der Zeichen in der Zeichenfolge sortiert und dann durch Kommas verbunden. Das Umkehrgeschäft ist kürzer als das erneute Teilen der Zeichenfolge.
quelle
j\,_omx_zdNchczd\,
Ruby,
5350 BytesIch verwende Ruby's
tr
, um das benutzerdefinierte Alphabeta-z
vor dem Sortieren durch zu ersetzen . Die Eingabe erfolgt über ein Befehlszeilenargument.quelle
$><<
zum Drucken auf dem Bildschirm verwenden (Sie können dann das Leerzeichen entfernen). Sie können weitere zwei Bytes sparen$*
, indem Sie Variablen wie folgt zuweisen :a,b=$*
und#sort_by
anstelle von verwenden#sort_by!
.*$*
(was ich zuerst hatte und was die gleiche Länge hat).Python, 131
Es sollte viel Raum für Verbesserungen geben.
quelle
a.find(c)
direkt.JavaScript (E6) 102
119Sortieren Sie mit einer Zuordnungsfunktion 'M' basierend auf dem Alphabet in der Variablen 'a'.
Mit E / A über Popup (Eingabeaufforderung + Warnung)
Als (testbare) Funktion mit 1 String-Parameter wird ein String-Array (92) zurückgegeben.
Test In FireFox / Firebug - Konsole
Ausgabe
quelle
(M(a)>M(b))-(M(a)<M(b))
M=w=>[...a].indexOf(w)
? Ich kann es momentan leider nicht testen.Clojure, 115 Bytes
Wow, das hat gut angefangen,
(sort-by(fn[w](mapv(zipmap(sort %2)%2)w)))
aber dann wurde mir klar, dassvec
es nicht wie Strings sortiert wird, und das Verschachteln dieser Kommas erfordert auch eine erhebliche Menge an Code.quelle