Ihre Herausforderung besteht darin, eine Zeichenfolge zu sortieren. Statt nach der normalen alphabetischen Reihenfolge (abc..xyz) sortieren Sie Zeichenfolgen nach einem bestimmten Alphabet.
Sie müssen ein Programm oder eine Funktion schreiben , die zwei Eingänge nehmen: Ein Alphabet A und einen String S . Beide enthalten nur englische Kleinbuchstaben und beide enthalten mindestens ein Zeichen.
Sie müssen Buchstaben in S so verschieben, dass der Buchstabe, der zuerst in A erscheint, zuerst erscheint, dann der Buchstabe, der an zweiter Stelle in A erscheint usw. In S können einige Buchstaben vorkommen , die in A nicht vorkommen . Diese müssen am Ende und links bleiben nicht relativ zueinander bewegt.
Testfälle:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Wenigste Bytes gewinnt!
Antworten:
05AB1E , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
Σ²sk>
.R۠
das erwartete Arbeiten :). Manchmal kann das als kleinerevy
Schleife funktionieren . Nette Antwort Mann.Python 3 ,
50 47 4644 Bytes-3 Bytes dank ngn!
-1 Byte dank mypetlion
Probieren Sie es online!
Übernimmt eine Zeichenfolge als Alphabet und eine Liste von Zeichen als Zeichenfolge und sortiert die Liste an der richtigen Stelle.
Die
%27
stellt sicher , dass , wenn das Zeichen nicht im Alphabet, kehrte der Index legt es nach dem Rest des Alphabets.quelle
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
um 1 Byte zu speichernHaskell, 42 Bytes
Probieren Sie es online!
quelle
Perl 6 ,
5543 BytesVersuch es
Versuch es
Erweitert:
quelle
Haskell ,
4034 Bytes-6 Bytes riesig dank Laikoni .
Probieren Sie es online!
Die erste Zeile ist ein Ausdruck der zwei Argumente nimmt: S und A .
quelle
f=
weil anonyme Funktionen erlaubt sind.(<>)
ist es jetzt im Prelude, so dass diesesfoldr(\c->r(==c)<>r(/=c))
für 34 Bytes gekürzt werden kann : Probieren Sie es online aus!Stax , 6 Bytes
Führen Sie es aus und debuggen Sie es
Dies wird nach einem Block sortiert, der dies tut.
quelle
Python 2 , 38 Bytes
a muss eine Zeichenfolge sein, s eine Liste von Zeichenfolgen der Länge 1. f sortiert s an der richtigen Stelle.
Probieren Sie es online!
Alternative Version, Zeichenfolgen-E / A, 48 Byte
Probieren Sie es online!
Wie es funktioniert
s.sort(None,a[::-1],1)
ist eine Abkürzung fürs.sort(cmp=None,key=a[::-1],reverse=1)
.Aus den Dokumenten :
quelle
cmp
und gemachtkey
undreverse
Keyword-nur Argumente, so dass sielist.sort
nur nimmt eine Positions Argument.J , 5 Bytes
Dyadisches Verb, wobei das Alphabet links und die zu sortierende Zeichenfolge rechts steht.
i.
Findet die Unregelmäßigkeiten der Zeichen des Strings im Alphabet, die Länge des Alphabets, falls nicht gefunden./:
sortiert das linke Agrument in der Reihenfolge, in der es auf der rechten Seite angegeben ist.]
das richtige Argument (der String)Probieren Sie es online!
quelle
Python 2 ,
35-50BytesProbieren Sie es online!
Takes
a
unds
als Streicher; Gibt eine Liste von Singelton-Strings zurück.Hinweis: Autsch! Gewonnen 15 Bytes zu beheben ...
quelle
K (ngn / k) , 9 Bytes
Probieren Sie es online!
{
...}
ist eine Funktion mit Argumentenx
undy
x?y
findet für jedes Element imy
Index sein erstes Vorkommen inx
; Wird ein Element in nicht gefundenx
, wird sein Index berücksichtigt0N
(-2 63 ).-
negiert alle Indizes, außer dass das0N
-s intakt bleibt, weil 2 63 63-2 63 (mod 2 64 )>
Gibt eine absteigende Permutation zurücky@
Indizesy
damitquelle
Kohle , 13 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Gelee , 4 Bytes
Ein dyadischer Link, der die Zeichenfolge links und das Alphabet rechts (als Liste von Zeichen) akzeptiert und das Ergebnis (auch als Liste von Zeichen) zurückgibt.
Probieren Sie es online!
Wie?
quelle
APL (Dyalog Unicode) , 5 Byte SBCS
Anonyme implizite Präfixfunktion
[string,ordering]
als Argument.Probieren Sie es online!
…
/
Reduzieren Sie um folgende Funktion:…
⍨
Und zwar die Version der folgenden Funktion mit umgekehrten Argumenten:⍋
bewerte die rechte Saite in der linken Reihenfolge (fehlende Buchstaben stehen am Ende)⌷
Verwenden Sie das, um zu indizieren ...⊃
das erste Element des Arguments (dh die Zeichenfolge)quelle
JavaScript (SpiderMonkey), 50 Byte
Nimmt Eingaben in der aktuellen Syntax vor
(a)(s)
, wobei a eine Zeichenfolge und s ein Array von Zeichen ist. Gibt ein Array von Zeichen zurück.Probieren Sie es online!
Wie?
Wir definieren die Hilfsfunktion g () als:
was zurückgibt:
Wir sortieren s [], indem wir g (b) - g (c) für jedes Zeichenpaar (b, c) berechnen , das an den Rückruf von sort () übergeben wird .
Da die Implementierung von sort () in SpiderMonkey stabil ist, werden alle Zeichen von s [] , die nicht zum Alphabet gehören, einfach in der Reihenfolge ihres Erscheinens am Ende verschoben und beim Vergleich unverändert gelassen.
JavaScript (ES6), 61 Byte
Nimmt Eingaben in der aktuellen Syntax vor
(a)(s)
, wobei sowohl a als auch s Arrays von Zeichen sind. Gibt eine Zeichenfolge zurück.Probieren Sie es online!
quelle
R ,
69 6258 BytesProbieren Sie es online!
Ein- und Ausgabe sind Vektoren einzelner Zeichen.
Erläuterung:
quelle
Brain-Flak (BrainHack) , 118 Bytes
Probieren Sie es online!
Die Eingabe ist die erste Zeichenfolge, gefolgt von einer Null, gefolgt von der zweiten Zeichenfolge. Eine Version, die eine neue Zeile als Trennzeichen verwendet, fügt stattdessen 24 Bytes hinzu:
Brain-Flak , 142 Bytes
Probieren Sie es online!
Erläuterung
quelle
C (gcc) 97 Bytes
Alle Leerzeichen (Leerzeichen und Zeilenumbrüche) im obigen Code dienen nur der Lesbarkeit und sollten entfernt werden.
Das Wörterbuch wird übergeben
D
und hat Länged
, die Zeichenfolge wird übergebenS
und hat Länges
.i
undo
sollte weggelassen werden.Probieren Sie es online!
quelle
Pyth ,
95 BytesProbieren Sie es hier aus!
quelle
Java 8, 98 Bytes
Probieren Sie es online aus.
Erläuterung:
quelle
String.repeat(int)
Methode von Java 11 konnte nichts gesenkt werden. Nett! :).repeat(n)
sieht jedoch vielversprechend aus. : DPerl 5 mit
-pF
43 BytesProbieren Sie es online!
quelle
$_=<>;
kostenlos gibt?@F
, aber ich habe es nicht zum Header hinzugefügt! Das mache ich jetzt! Vielen Dank!Prolog (SWI) , 136 Bytes
Probieren Sie es online! Anwendungsbeispiel:
quelle
Sauber , 61 Bytes
Probieren Sie es online!
Definiert die Funktion
$ :: [Char] [Char] -> [Char]
.Es überrascht nicht, dass dies buchstäblich Nimis Haskell-Antwort ist, jedoch länger.
quelle
Gelee , 7 Bytes
Probieren Sie es online!
quelle
APL + WIN, 12 Bytes
Fordert zur Eingabe des Bildschirms von S und dann von A auf:
Probieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
quelle
PynTree , 13 Bytes
Probieren Sie es online!
Port of Jo Kings Python Antwort.
Erläuterung
quelle