Etwas mehr als eine Umkehrung davon .
In: Mehrzeilige DSV- Daten und ein einzelnes Trennzeichen. Der DSV kann als Datei, Dateiname, durch Zeilenumbrüche getrennte Zeichenfolge, Liste von Zeichenfolgen usw. verwendet werden. Alle Datensätze haben die gleiche Anzahl von Feldern, und kein Feld ist leer. Daten enthalten kein Trennzeichen und es gibt keinen Anführungszeichen- oder Escape-Mechanismus.
Out: Eine Datenstruktur, die den DSV darstellt, z. B. eine Liste von Listen von Zeichenfolgen oder eine Matrix von Zeichenfolgen.
Beispiele
["here is,some,sample","data,delimited,by commas"]
und ","
:
[["here is","some","sample"],["data","delimited","by commas"]]
["hello;\"","\";world","\";\""]
und ";"
:
[["hello","\""],["\"","world"],["\"","\""]]
(Escapezeichen, da in diesem Beispiel JSON verwendet wird)
["to be or not","that is the question"]
und " "
:
[["to","be","or","not"],["that","is","the","question"]]
",for,example,this,string,"
Antworten:
Gelee ,
32 BytesDennis weist darauf hin, dass die 2-Byte-Lösung anscheinend nicht funktioniert, die dyadische Verknüpfung selbst jedoch und dass es tatsächlich die Art und Weise ist, wie Befehlszeilenargumente analysiert werden, die sie so aussehen lassen.
Probieren Sie es online! - footer ruft die Funktion mit explizit gesetztem left und right auf und formatiert sie als Raster *.
Genau wie unten, mit Ausnahme von
ṣ
Aufspaltungen beim Auftreten des richtigen Arguments und nicht bei Unterlisten, die dem richtigen Argument entsprechen.Die 3-Byte- Fußzeile zeigt das Ergebnis als Raster * an.
Eine dyadische Verknüpfung (Funktion), die die DSV-Liste links und den Begrenzer rechts aufnimmt.
Wie?
* Als volles Programm würde die implizite Ausgabe einfach alle Zeichen "zusammenfassen", so dass die Fußzeile des TIO-Links den Link als Dyade aufruft und verwendet,
G
um das Ergebnis schön zu formatieren.quelle
Japt , 3 Bytes
Online testen! (Verwendet das
-Q
Flag, um die Ausgabe schön zu drucken.)quelle
Powershell,
2522/23 BytesZwei Optionen, von denen eine nur Split für das erste Argument aufruft und das zweite Argument als Trennwert verwendet.
Ein Byte länger, um csvs zu analysieren, nimmt Dateiname als erstes Argument und Delim als zweites.
-2, da der Parameter
-Delimiter
(-D
) nicht erforderlich ist und standardmäßig verwendet wird.Leider kann Powershell kein Array mit zwei Parametern übergeben, da davon ausgegangen wird, dass es sich um beide Dateien handelt, und der Befehl zweimal ausgeführt wird. Soweit ich sehe, ist keine andere Eingabemethode mit zwei Variablen kürzer als diese. Dies ist also wahrscheinlich die kürzest mögliche Antwort.
ipcsv
ist ein Alias fürImport-Csv
, nimmt standardmäßig einen Dateinamen als erste unbenannte Eingabe und das Begrenzungszeichen als zweite.Führen Sie gegen das Beispiel von der Wiki-Seite zurück
quelle
Python, 33 Bytes
quelle
Haskell, 29 Bytes
Anwendungsbeispiel:
(map.splitOn) " " ["to be or not","that is the question"]
->[["to","be","or","not"],["that","is","the","question"]]
.quelle
05AB1E , 5 Bytes
Probieren Sie es online!
Erläuterung:
quelle
JavaScript, 26 Bytes
Erhält Eingaben im Format (Array von Strings) (Trennzeichen)
Probieren Sie es online!
quelle
Mathematica, 11 Bytes
Integrierte Funktion mit zwei Argumenten, einer Liste von Zeichenfolgen und einem Zeichen (und noch allgemeiner). Beispielverwendung:
Ausbeuten
quelle
MATLAB / Octave,
4125 BytesErstellt eine anonyme Funktion mit dem Namen,
ans
die die erste Eingabe als Zellenarray von Zeichenfolgen und die zweite Eingabe als Zeichenfolge akzeptiert.Probieren Sie es online
quelle
Cheddar, 19 Bytes
schöne Demonstration der Looping-Fähigkeiten. Ich habe neue Komposition hinzugefügt und f.op. Blöcke, so dass interessante Golfen ermöglicht.
(=>:@.split)
soll funktionieren, tut es aber nicht :(quelle
MATL,
14124 BytesProbieren Sie es bei MATL Online aus (der Link hat am Ende eine Änderung, um die Dimensionalität des Ausgabezellenarrays anzuzeigen).
Erläuterung
quelle
CJam, 5 Bytes
Erläuterung:
quelle
Ruby mit '-n', 17 + 1 = 18 Bytes
Wie es funktioniert
*$*
splattet der String und wir können ihn als Parameter für densplit
Funktion verwendenchomp
aber jede andere Lösung scheint länger zu dauern.quelle
Rebol, 33 Bytes
quelle
GNU sed , 48 + 1 (r Flag) = 49 Bytes
Probieren Sie es online!
In sed gibt es keine Datentypen, aber eine natürliche Darstellung einer Liste wäre eine Sammlung von Zeilen. Als solches besteht das Eingabeformat aus DSV-Datensätzen, die sich jeweils in einer separaten Zeile befinden, wobei sich das Trennzeichen in der ersten Zeile befindet.
Erläuterung: sed führt das Skript standardmäßig so oft aus, wie Eingabezeilen vorhanden sind
quelle
REXX, 95 Bytes
Nimmt einen Dateinamen und ein Trennzeichen als Argumente, wird der Inhalt der Datei in den Stamm eingefügt
o
.quelle
APL (Dyalog) , 4 Bytes
In Versionen bis einschließlich 15.0 wird dies
⎕ML←3
von vielen als Standard benötigt . Ab Version 16.0⊂
kann⊆
für den gleichen Effekt nur noch durch ersetzt werden .Nimmt das Trennzeichen als linkes Argument und das DSV als rechtes Argument.
Probieren Sie es online!
≠
die Ungleichungen (des linken und des rechten Arguments)⊂¨
partitionieren⊢
richtiges argumentUnter Partition versteht man das Entfernen aller Elemente, die im linken Argument durch eine entsprechende Null gekennzeichnet sind, und das Starten einer neuen Partition, wenn die entsprechende Zahl im linken Argument größer ist als die des Vorgängers, dh bei jedem Argument, bei dem das linke Argument ein Boolescher Wert ist, als ist der Fall hier.
quelle
R, 8 Bytes (2 Wege)
R verfügt über zwei integrierte Funktionen, die die Anforderungen dieser Herausforderung erfüllen:
Nimmt einen Vektor von Zeichenfolgen und ein Trennzeichen und gibt eine Liste von Vektoren der getrennten Zeichenfolgen zurück.
Nimmt einen Dateinamen und ein Trennzeichen und gibt einen Datenrahmen zurück. Technisch sind dies möglicherweise 10 Bytes, da die Option erforderlich ist
header=F
damit die ersten Elemente nicht als Spaltennamen gelesen werden. Derzeit liest der TIO-Link von stdin.Probieren Sie diese online!
quelle