In einem Textabschnitt werden Zahlen und Buchstaben gemischt. Ihre Aufgabe ist es, die Zahlen auf der linken Seite und die Buchstaben auf der rechten Seite in der gleichen Reihenfolge in jeder Zeile zu trennen.
Regeln:
- Zahlen sind einfache ganze Zahlen; Also kein Dezimalpunkt und keine negativen / positiven Vorzeichen.
- Zahlen können zusammenhängend sein oder nicht, aber in jedem Fall müssen sie in der gleichen Reihenfolge nach links verschoben werden.
- Zahlen können zwischen Wörtern vorkommen.
- Der Text enthält nur alphabetische ASCII-Buchstaben und -Zahlen sowie Leerzeichen, Unterstriche, Kommas und Punkte.
- Derjenige, der dies mit minimalen Tastenanschlägen (wie vim-Makros) oder der geringsten Anzahl von Bytes im Falle von Skripten tut, ist der Gewinner.
Beispieltext:
A word can have any number of text like 433884,
but all the numb89ers has to be moved left side
but alph6abetical va9lues has to be pas46ted on right side.
The text might con4tain chara29cters s2huffled like hlep or dfeintino or even
meaningless1 words co43mbined togeth81er.
Erwartete Ausgabe:
433884A word can have any number of text like ,
89but all the numbers has to be moved left side
6946but alphabetical values has to be pasted on right side.
4292The text might contain characters shuffled like hlep or dfeintino or even
14381meaningless words combined together.
Antworten:
Retina , 14 Bytes
Probieren Sie es online!
Erläuterung
O
führt eine Sortierstufe ein.%
weist Retina an, die Transformation auf jede Zeile separat anzuwenden.$
Weist es an, die Übereinstimmungen nach dem Ergebnis der angegebenen Ersetzung zu sortieren.Der reguläre Ausdruck selbst entspricht
\d|(.)
entweder einer Ziffer oder allem anderen, was in einer Gruppe erfasst wird1
. Dies wird durch$#1
die Anzahl der Gruppenerfassungen ersetzt1
. Das heißt, der Sortierschlüssel für Ziffern ist0
und der Sortierschlüssel für alles andere ist1
. Da die Sortierung in Retina stabil ist, werden die Ziffern einfach nach links und alle anderen nach rechts verschoben.quelle
05AB1E,
1410 BytesCode:
Erläuterung:
Beispiel Eingabe:
Beispielausgabe:
Probieren Sie es online aus
quelle
Python 3, 64 Bytes
Drei gleichwertige Lösungen! Ich kann nicht auswählen.
quelle
while 1:print(*sorted(input(),key=lambda x:-('/'<x<':')),sep='')
Perl, 17 Bytes
16 Byte Code + 1 Schalter
Benötigt
-p
.Verwendung
Alternative:
Benötigt
-n
.Verwendung
quelle
Hoon ,
9283 Bytes++lore
Teilt ein mehradriges Kabel in ein(list cord)
,(trip +<)
verwandelt es in ein Band.++skid
trennt eine Liste in zwei Teile: eine Seite, auf der die Funktion yes zurückgibt, eine Seite, auf der no zurückgegeben wird. Unsere Funktion versucht, das Zeichen mit++nud
(numerisch) zu analysieren und zu prüfen, ob es vollständig analysiert wird. Anschließend verschweißen wir die beiden Listen wieder zu einem Band.quelle
MATL ,
13 -12 BytesBeendet sich mit einem Fehler (standardmäßig zulässig) und erzeugt die richtige Ausgabe.
Probieren Sie es online!
Erläuterung
quelle
V, 12 Bytes
V, ist eine unvollendete, auf 2D-Saiten basierende Golfsprache. Obwohl es noch nicht fertig ist, funktioniert dieses Programm ab Commit 45 , das letzte Nacht veröffentlicht wurde, was dies zu einer konkurrierenden Antwort macht. (Die meisten meiner vorherigen V-Antworten waren nicht konkurrierend.)
Beachten Sie, dass der abschließende Zeilenumbruch erforderlich ist, obwohl dies auf einen Fehler zurückzuführen ist.
Probieren Sie es online!
Erläuterung:
¨Ä©¨ä©/²±
erweitert sich in den regulären Ausdruck vim:Dies ist eine Nicht-Ziffer,
(\D)
gefolgt von einer Ziffer(\d)
, und tauschen Sie sie aus.Da dies mit Brutto-Unicode-Zeichen gefüllt ist, ist hier ein umkehrbarer Hexdump:
quelle
Javascript ES6, 40 Bytes
a=>a.replace(/\D/g,'')+a.replace(/\d/g,'')
Versuchte mehrere andere Lösungen, konnte es aber nicht kleiner machen.
Mein erster Versuch war,
a=>[...a.match(/\d/g),...a.match(/\D/g)].join``
aber das ist 5 Bytes längerProbieren Sie es hier aus
Code-Snippet anzeigen
quelle
CJam,
91316 BytesEs gibt nicht
f$
...Diese 13-Byte-Version funktioniert fast:
quelle
PowerShell v2 +, 55 Byte
Aufgrund der Notwendigkeit, mehrzeilige Eingaben zu unterstützen, müssen wir unsere
-replace
Anweisungen mit einer Schleife und-split
in Zeilenumbrüchen kapseln. Ansonsten grundsätzlich gleichbedeutend mit der JavaScript-Lösung .quelle
Pyth - 11 Bytes
Mag meinen Gruppentest nicht. Nimmt Eingaben als Liste von Zeilen und sagt mir, ob das nicht in Ordnung ist.
Probieren Sie es hier online aus .
quelle
Pyth,
1615 Bytes1 Byte danke an @FryAmTheEggman .
Probieren Sie es online!
Beispieleingabe:
Beispielausgabe:
Wie es funktioniert
quelle
U
da Maps automatisch ganze Zahlen in Bereiche umwandeln.Netzhaut, 16 Bytes
Stabile Blasensorte.
Beispieleingabe:
Beispielausgabe:
Probieren Sie es online!
quelle
C #, 59 Bytes
Eine einfache C # -Lambda-Funktion mit Regex.
Beispielausgabe
quelle
C # (LINQ), 110 Bytes
Bei weitem nicht die kürzeste Lösung, aber ich dachte, dies wäre eine gute Verwendung von LINQ.
quelle
char.IsDigit
es sie gibt ...Faktor 61
Es ist ein naiver Ansatz.
"\n"split
Teilt die Zeichenfolge oben auf dem Stapel in Zeilen auf. Dann füreach
Zeile:[ digit? ] partition
Teilt jede Zeile in Ziffern und Nicht-Ziffern[ write ] bi@
gibt beide aus, undnl
druckt eine neue Zeile.PS:
Als Wort 90 Bytes (71, wenn Sie den faktorischen Langnamen durch 1 Buchstaben ersetzen):
quelle
Pyth, 14 Bytes
Probieren Sie es online!
Erläuterung:
Die Logik der Lösung ist dieselbe wie in Lynns Antwort .
quelle
Java 8,
13012686 Bytes-4 Bytes, die Java 7 in 8 konvertieren und ein nicht verwendetes Zeichen entfernen
-40 Bytes, die das Programm in Funktion konvertieren und ändern
[^\\d]
in\\D
Erläuterung:
Probieren Sie es hier aus.
quelle
GNU Sed, 28
Die Punktzahl enthält +1 für die
-r
Option zu sed.Wechselt wiederholt ein Nicht-Zahlenzeichen, gefolgt von einem Zahlenzeichen, bis keine Substitutionen mehr vorgenommen werden.
Leider haben sed reguläre Ausdrücke kein
\d
oder\D
, daher müssen diese lang geschrieben werden.Ideone.
quelle
Oktave,
3732 Bytesquelle
Clojure, 113 Bytes
Sortiert die Ziffern an den Zeilenanfang.
quelle
Oracle SQL 11.2, 131 Byte
Die Zeilen in der Eingabezeichenfolge werden durch '¤' getrennt. Auf diese Weise muss keine Tabelle erstellt werden, die als Eingabe verwendet werden soll.
Abfrage:
Nicht golfen
quelle
APL, 28 Zeichen
quelle
Haskell, 60 Bytes
Verwendung
quelle
Sed, 35 Bytes
Dies erstellt eine Kopie der Zeile, entfernt Ziffern von einer Kopie und Buchstaben von der anderen, bevor sie neu kombiniert werden.
quelle
Bash, 42 Bytes
Seien Sie gewarnt, dass diese rekursive Implementierung für jede Eingabezeile einen neuen Prozess auslöst!
quelle
Japt v2 ,
1412 Bytes-2 Bytes dank ETHproductions
Starte es
quelle
Julia 0,6 , 77 Bytes
Anonyme Funktion, die eine Zeichenfolge aufnimmt und die Ausgabe druckt. Durchläuft die Zeichen in einer Schleife und fügt sie dem linken
l
oder rechtenr
Puffer hinzu, bis eine neue Zeile gefunden wird. Anschließend werden die Puffer gedruckt und geleert. Viel Potenzial nützliche Konstrukte wiesort
,filter
und logische Indizierung (Indizierung mit einer Reihe von boolean - Werten) funktionieren nicht auf Strings.Probieren Sie es online!
quelle
Vim, 30 Tastenanschläge
Zeichnen Sie eine Such- und Ersetzungsaktion auf, bei der Ziffern nach links von Nicht-Ziffern verschoben werden. Rufen Sie das Makro rekursiv auf, bis eine Ausnahme ausgelöst wird, weil das Muster nicht gefunden wurde (wenn rechts von den Nicht-Ziffern keine Ziffern mehr vorhanden sind).
quelle
C (gcc) , 106 Bytes
Probieren Sie es online!
quelle