Wenn Sie eine Zeichenfolge angegeben haben x
, geben Sie die Zeichen x
sortiert nach der Reihenfolge des Auftretens in Ihrem Quellcode aus.
Beispiele
Source: ThisIs A Test
Input: Is it a Test?
Output: TissI etta?
Source: Harry - yer a wizard.
Input: I'm a what?
Output: aa wh'?Imt
Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
Input:
Output:
Regeln
- Es gelten Standard-Regelungslücken
- Eingabe und Ausgabe können entweder eine Zeichenfolge, eine Liste von Zeichen oder eine Liste von Bytes sein.
- Wenn ein Zeichen in der Quelle mehrfach verwendet wird, verwenden Sie das erste Vorkommen.
- Wenn ein oder mehrere Zeichen nicht in der Quelle erscheinen, sollten sie am Ende stehen. Ihre Reihenfolge spielt keine Rolle und muss auch nicht konsistent sein.
- Die Quelle darf nicht leer sein
- Zeilenumbrüche werden wie andere Zeichen behandelt.
- Die Reihenfolge, in der der Code ausgeführt wird, spielt keine Rolle. Nur die rohe Saite.
- Die Eingabe erfolgt in derselben Codierung wie der Code.
- Die Eingabe ist nach Zeichen und nicht nach Bytes sortiert.
- Beim Sortieren wird zwischen Groß- und Kleinschreibung unterschieden
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes für jede Sprache!
x
in UTF-8 oder UTF-16 codiert werden, wenn unsere Lösung überhaupt nicht in Unicode codiert ist und die Unicode-Zeichen inx
den Zeichen auf der Codepage der Lösung stehen? Einige Golfsprachen verwenden beispielsweise benutzerdefinierte Codeseiten, um die Anzahl der Bytes zu verringern, sind jedoch mit bloßem Auge lesbar.Antworten:
Python 3.8 (Vorabversion) ,
1021009685797668615960 ByteProbieren Sie es online!
-2 Bytes, indem Sie dies verwenden
-4 Bytes durch Erkennen
<0
====-1
und Entfernen des Unnötigen+1
-11 Bytes dank Neil
-6 Bytes dank Dzaima
-3 Bytes dank Stange
-8 Bytes dank negativer Sieben, die darauf hinweisen, dass das Programm eine Liste von Zeichen ausgeben kann
-7 Bytes aufgrund der Verkörperung der Ignoranz, die zurück zu Python 3.8 wechselt und verwendet
:=
-2 Bytes, da Jo King den Variablennamen s für c ausschaltet, so dass wir das weglassen könnten
;c
+1 Byte, da negative Sieben darauf hinwiesen, dass die Filterung nicht
;
korrekt warquelle
('s=%r;exec(s)'%s+x).find(x)
?('s=%r;exec(s)'%s).find(x)
mit Ihrem Code würde sie gültig machen?input()
und diese speichern;
wird in der aktuellen Version nicht richtig sortiertAPL (Dyalog Unicode) , 14 Byte SBCS
Anonyme implizite Präfixfunktion.
⊂
Argument beifügen (als Ganzes handeln)…
⊃¨
Wählen Sie dann für jeden der folgenden Indizes ein Zeichen aus:∘⍋
Die Indizes, die das Argument in der durch die folgende Zeichenfolge angegebenen Reihenfolge sortieren würden (alle Nichtmitglieder werden in der Reihenfolge ihres Erscheinens am Ende angezeigt):'''∘⍋⊃¨⊂'
die Charaktere'∘⍋⊃¨⊂
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 48 Byte
Probieren Sie es online!
quelle
JavaScript (Node.js) ,
60 5856 Bytes-2 Bytes von Jo King
Probieren Sie es online!
quelle
f=...
. Wenn dies der Fall ist, geben Sie dies bitte bei Ihrer Übermittlung und der Anzahl der Bytes an.Perl 6 , 56 Bytes
Probieren Sie es online!
quelle
Ruby , 57 Bytes
Probieren Sie es online!
Ziemlich einfach, vorausgesetzt, ich habe keinen Golftrick verpasst. Nehmen Sie eine Liste von Zeichen auf und sortieren Sie nach ihrem Index in einer Zeichenfolge, die aus allen eindeutigen Zeichen im Code in der Reihenfolge ihres Auftretens besteht. Oft ist ihr erster Auftritt in genau dieser Zeichenfolge, aber das ändert nichts an der Reihenfolge.
quelle
05AB1E ,
242221 BytesProbieren Sie es online!
Erläuterung:
Das erste Mal Sachen in 05AB1E ausprobiert, also wahrscheinlich viel zu retten
quelle
}krR«'«
. HINWEIS: Ist'
ein einzelnes Zeichen, reicht dies'"
aus (im Gegensatz zu C #, wo ein zusätzliches Trailing erforderlich ist'
). Gegenwärtig schiebt Ihr Code zuerst die ZeichenfolgeΣ
, dann die Zeichenfolge"
, dann die Zeichenfolge«
, dann die Zeichenfolge'«Rrk}
und dann das Anhängen, Umkehren, Umkehren des Stapels und den Index. Schlauer Umgang mit der Rückseite der Saite und am Ende! Ich werde sehen, ob ich eine Lösung für Ihre Antwort finden kann, und meine anschließend löschen.}krR«'"Σ
. PS: Ich benutze=
(drucke ohne zu poppen) manchmal für Debug-Zwecke. Sie können auch--debug-stack
als Argument hinzufügen , aber es ist ein bisschen seltsam in der neuen 05AB1E-Version imho.Jelly ,
16 bis14 Bytes (Jelly-Code-Seite), 25 Bytes (UTF8)Probieren Sie es online!
Ein vollständiges Programm, das ein einziges Argument benötigt, die zu sortierende Zeichenfolge.
Vielen Dank an @ JonathanAllan für den Hinweis auf einen Fehler!
Laut @EriktheOutgolfer kann der Code zwar über die Jelly-Codepage eingegeben werden, die sortierten Zeichen sind jedoch die entsprechenden UTF-8-Zeichen und nicht die Bytes der Quelle. Daher habe ich die Punktzahl auch in UTF-8-Bytes aufgenommen. Beachten Sie, dass dies wahrscheinlich für alle Sprachen mit benutzerdefinierten Codepages gilt.
Erläuterung
Die obige Zeichenfolge wird wie folgt ausgewertet:
Ṿv`
ist hier effektiv ein No-Op, existiert aber, um sicherzustellen, dass alle Charaktere dargestellt werden.quelle
Jelly , 14 Bytes
Ein vollständiges Programm, das eine (Python-formatierte) Zeichenfolge (aus Jelly -Codepage- Zeichen) akzeptiert, die die Ausgabe druckt.
(als monadischer Link liefert er eine Liste von Listen von Zeichen)
Probieren Sie es online!
Wie?
quelle
f
undḟ
arbeite an Unicode-Zeichen, denn das ist die Art von Zeichen, die der String tatsächlich enthält. Zum Beispiel”ĿO
kehrt es zurück,319
wenn es lokal in JELLY codiert getestet wird, so dass es dasĿ
und nicht das C7 sieht .f
undḟ
arbeite auch an Unicode, aber ist das hier ein Problem? Ich übergebe den eingeschränkten Satz von Unicode-Zeichen, der auf Jellys Codepage angezeigt wird (d. H. Bytes, die mit dieser Codierung codiert wurden und "Die Eingabe erfolgt in derselben Codierung wie der Code"). Filtern Sie sie korrekt (da diese eingegebenen Bytes als Unicode codiert wurden) und geben Sie sie dann korrekt aus. Was ich dann zähle, sind die Bytes des Codes (Erfüllung "Die Eingabe wird nach Zeichen sortiert, nicht nach Bytes" und "kürzeste Antwort in Bytes für jede Sprache gewinnt").Kohle , 37 Bytes
Probieren Sie es online! Erläuterung:
Es gibt zwei Möglichkeiten, Zeichen in Charcoal zu zitieren.
´
setzt ein beliebiges einzelnes Zeichen in Anführungszeichen, während”y
... ein”
beliebiges Zeichen in Anführungszeichen setzt, außer”
und zählt auch als separate Zeichenfolge. Es stellt sich heraus, dass der Overhead im Umgang damit”
bedeutet, dass es keinen Golfer gibt.Durchlaufen Sie die Zeichen der Reihe nach und geben Sie alle übereinstimmenden Zeichen aus der Eingabe aus. Dies sortiert die Eingabe.
Geben Sie alle nicht übereinstimmenden Zeichen in der Eingabe aus.
quelle
J , 14 Bytes
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
]
das Argument…
i:
Letztes Vorkommen (Nichtmitglieder erhalten den Index über das Ende der Suchzeichenfolge hinaus) jedes Zeichens in:']/:''i'
die Charaktere]/:'i
… Damit
/:
sortieren:]
das Argumentquelle
Java 10,
129100 Bytes-29 Bytes durch Portierung der C # - Antwort
+c
von @EmbodimentOfIgnorance .Probieren Sie es online aus.
Erläuterung:
HINWEIS: Normalerweise ist es billiger zu verwenden
s.sort((a,b)->Long.compare(a,b))
alss.sort(java.util.Comparator.comparing(c->c)
, aber in diesem Fall wären es 11 Bytes länger:Probieren Sie es online aus.
quelle
05AB1E ,
312619 Bytes-7 Bytes, indem er sich in seiner C # -Antwort an den Ansatz von @Ausführungsbeispiel von Ignoranz anlehnt, das aktuelle Zeichen vor der Indizierung anzuhängen.
Probieren Sie es online aus oder probieren Sie es mit der hinzugefügten Debug-Zeile, um die Strings zu sehen, in die indiziert wird .
Erläuterung:
quelle
PowerShell , 68 Byte
Probieren Sie es online!
quelle
sort
stattdessensort-object
auch. 2) Die Variable$b
definiert Ihren Code außerhalb des Gültigkeitsbereichs. DasStandard loopholes
erfordert eine vollständige Antwort . Für Powershell bedeutet dies: Jede Person kann den Code als Powershell-Skript in eine Datei einbinden und in einem Terminal ausführen. Ihr Code funktioniert nicht mit einer Skriptdatei. Es tut uns leid.sort
Alias funktioniert nicht in pwsh unter Ubuntu 18.04 2) Ja, das ist meine Schuld, aber ich habe mich selbst korrigiert, und infolgedessen wurde der Code natürlich länger :)code became longer
- Dies ist die Herausforderung :)$p
wird mit dem Quellcode an das Ende des Strings angehängt und erhält einen Index von gleich$src.Length
, aber da „ihre Reihenfolge keine Rolle spielt und nicht konsistent sein sollte“, spielt es keine Rolle. In dieser Antwort wird die gesamte Eingabezeichenfolge mit dem Quellcode an das Ende der Zeichenfolge angehängt.Python 2 , 62 Bytes
Gleiches Konzept wie meine C # Antwort.
Probieren Sie es online!
quelle
\\\'
sollte sein\'\\
. Netter Ansatz! 23 Bytes in meiner Java-Antwort gespeichert.Japt , 18 Bytes
Versuch es
quelle
Gelee , 26 Bytes (UTF-8 *)
Probieren Sie es online!
Übernimmt die Eingabe als Python-formatierte Zeichenfolge im ersten Befehlszeilenargument.
Einzigartige Charaktere :
* Hinweis: Ich habe festgestellt, dass dies bei der Codierung in JELLY nicht funktioniert, da die UTF-8-Zeichen anstelle der eigenen Bytes sortiert werden.
quelle