Un poco más que un inverso de esto .
En: datos DSV multilínea y un solo carácter delimitador. El DSV puede tomarse como un archivo, un nombre de archivo, una cadena separada por salto de línea, una lista de cadenas, etc. Todos los registros tienen el mismo número de campos y ningún campo está vacío. Los datos no contienen el carácter delimitador y no existe un mecanismo de comillas o escape.
Fuera: una estructura de datos que representa el DSV, por ejemplo, una lista de listas de cadenas o una matriz de cadenas.
Ejemplos
["here is,some,sample","data,delimited,by commas"]
y ","
:
[["here is","some","sample"],["data","delimited","by commas"]]
["hello;\"","\";world","\";\""]
y ";"
:
[["hello","\""],["\"","world"],["\"","\""]]
(se escapa porque este ejemplo usa JSON)
["to be or not","that is the question"]
y " "
:
[["to","be","or","not"],["that","is","the","question"]]
",for,example,this,string,"
Respuestas:
Gelatina ,
32 bytesDennis señala que si bien la solución de 2 bytes parece no funcionar, el enlace diádico sí lo hace, y que en realidad es la forma en que se analizan los argumentos de la línea de comandos lo que hace que se vea de esa manera.
¡Pruébelo en línea! - pie de página llama a la función con izquierda y derecha establecidas explícitamente, y los formatos como una cuadrícula *.
Exactamente como el siguiente, excepto que se
ṣ
divide en las apariciones del argumento correcto en lugar de en sublistas iguales al argumento correcto.El pie de página de 3 bytes muestra el resultado como una cuadrícula *.
Un enlace (función) diádico que toma la lista DSV a la izquierda y el delimitador a la derecha.
¿Cómo?
* Como un programa completo, la salida implícita simplemente "eliminaría" todos los caracteres, por lo que el pie de página del enlace TIO llama al enlace como una diada y lo usa
G
para formatear el resultado de manera agradable.fuente
Japt , 3 bytes
¡Pruébalo en línea! (Utiliza la
-Q
bandera para imprimir la salida)fuente
Powershell,
2522/23 bytesDos opciones, una solo llama dividir en el primer argumento, utilizando el segundo argumento como un valor de delimitación.
Un byte más largo, incorporado para analizar csvs, toma el nombre de archivo como primer argumento y delimita como segundo.
-2 porque no requiere el parámetro
-Delimiter
(-D
), y lo asumirá por defecto.Lamentablemente, PowerShell no puede pasar una matriz de dos parámetros, ya que supondrá que ambos son archivos y ejecutará el comando contra él dos veces, por lo que puedo ver, ningún otro método de entrada de dos var es más corto que este, por lo que es probable La respuesta más corta posible.
ipcsv
es un alias paraImport-Csv
, toma un nombre de archivo como la primera entrada sin nombre y el carácter delimitado como el segundo comportamiento predeterminado.Ejecutar contra el ejemplo de la página wiki devuelve
fuente
Python, 33 bytes
fuente
Haskell, 29 bytes
Ejemplo de uso:
(map.splitOn) " " ["to be or not","that is the question"]
->[["to","be","or","not"],["that","is","the","question"]]
.fuente
05AB1E , 5 bytes
Pruébalo en línea!
Explicación:
fuente
JavaScript, 26 bytes
Recibe la entrada en formato (matriz de cadenas) (delimitador)
Pruébalo en línea!
fuente
Mathematica, 11 bytes
Función incorporada que toma dos argumentos, una lista de cadenas y un carácter (e incluso más general que eso). Ejemplo de uso:
rendimientos
fuente
MATLAB / Octave,
4125 bytesCrea una función anónima llamada
ans
que acepta la primera entrada como una matriz de celdas de cadenas y la segunda entrada como una cadena.Pruébalo en línea
fuente
Cheddar, 19 bytes
Buena demostración de habilidades de bucle. Agregué nueva composición y f.op. bloques de modo que permite un interesante golf.
(=>:@.split)
se supone que funciona pero no funciona :(fuente
MATL,
14124 bytesPruébelo en MATL Online (el enlace tiene una modificación al final para mostrar la dimensionalidad de la matriz de celdas de salida).
Explicación
fuente
CJam, 5 bytes
Explicación:
fuente
Ruby usando '-n', 17 + 1 = 18 bytes
Cómo funciona
*$*
Como solo tenemos 1 parámetro, salpica la cadena y podemos usarla como parámetro para lasplit
funciónchomp
pero cualquier otra solución parece ser más larga que esta.fuente
Rebol, 33 bytes
fuente
GNU sed , 48 + 1 (r flag) = 49 bytes
Pruébalo en línea!
En sed no hay tipos de datos, pero una representación natural de una lista sería una colección de líneas. Como tal, el formato de entrada consiste en registros DSV cada uno en una línea separada, con el delimitador presente en la primera línea.
Explicación: por diseño, sed ejecuta el script tantas veces como haya líneas de entrada
fuente
REXX, 95 bytes
Toma un nombre de archivo y un delimitador como argumentos, el contenido del archivo se coloca en la raíz
o
.fuente
APL (Dyalog) , 4 bytes
En las versiones hasta 15.0 inclusive, esto necesita, lo
⎕ML←3
cual es predeterminado por muchos. A partir de la versión 16.0⊂
solo se puede reemplazar por⊆
el mismo efecto.Toma el separador como argumento izquierdo y DSV como argumento derecho.
Pruébalo en línea!
≠
las desigualdades (del argumento izquierdo y el argumento derecho)⊂¨
dividir cada⊢
argumento correctoPor partición se entiende eliminar todos los elementos indicados por un cero correspondiente en el argumento izquierdo, y comenzar una nueva partición siempre que el número correspondiente en el argumento izquierdo sea mayor que su predecesor, es decir, en cada uno si el argumento izquierdo es booleano, como Es el caso aquí.
fuente
R, 8 bytes (2 formas)
R tiene dos funciones integradas que cumplen los requisitos de este desafío:
toma un vector de cadenas y un separador, y devuelve una lista de vectores de las cadenas separadas.
toma un nombre de archivo y un separador, y devuelve un marco de datos. Técnicamente, esto podría ser de 10 bytes porque necesita la opción
header=F
para que no lea los primeros elementos como los nombres de columna. Actualmente el enlace TIO se lee desde stdin.¡Prueba estos en línea!
fuente