Un peu plus qu'un inverse de cela .
Dans: Multi-ligne DSV données et un seul caractère delimiter. Le DSV peut être considéré comme un fichier, un nom de fichier, une chaîne séparée par des sauts de ligne, une liste de chaînes, etc. Tous les enregistrements ont le même nombre de champs et aucun champ n'est vide. Les données ne contiennent pas le caractère délimiteur et il n'y a pas de mécanisme de citation ou d'échappement.
Out: Une structure de données représentant le DSV, par exemple une liste de listes de chaînes ou une matrice de chaînes.
Exemples
["here is,some,sample","data,delimited,by commas"]
et ","
:
[["here is","some","sample"],["data","delimited","by commas"]]
["hello;\"","\";world","\";\""]
et ";"
:
[["hello","\""],["\"","world"],["\"","\""]]
(s'échappe car cet exemple utilise JSON)
["to be or not","that is the question"]
et " "
:
[["to","be","or","not"],["that","is","the","question"]]
",for,example,this,string,"
Réponses:
Gelée ,
32 octetsDennis souligne que bien que la solution à 2 octets ne semble pas fonctionner, le lien dyadique lui-même fonctionne, et que c'est en fait la façon dont les arguments de la ligne de commande sont analysés qui le fait ressembler à cela.
Essayez-le en ligne! - footer appelle la fonction avec les paramètres gauche et droit définis explicitement, et formate comme une grille *.
Exactement comme ci-dessous, à l'exception des
ṣ
divisions aux occurrences de l'argument de droite plutôt qu'aux sous-listes égales à l'argument de droite.Le pied de page de 3 octets affiche le résultat sous forme de grille *.
Un lien dyadique (fonction) qui prend la liste DSV à gauche et le délimiteur à droite.
Comment?
* En tant que programme complet, la sortie implicite "associe" simplement tous les caractères, donc le pied de page du lien TIO appelle le lien en tant que dyade et utilise
G
pour formater agréablement le résultat.la source
Japt , 3 octets
Testez-le en ligne! (Utilise le
-Q
drapeau pour imprimer la sortie)la source
Powershell,
2522/23 octetsDeux options, l'une appelle simplement split sur le premier argument, en utilisant le deuxième argument comme valeur de délimitation.
Un octet de plus, intégré pour analyser csvs, prend le nom de fichier comme premier argument et le délimiteur comme second.
-2 car il ne nécessite pas le paramètre
-Delimiter
(-D
), et l'assumera par défaut.malheureusement, powershell ne peut pas passer un tableau de deux paramètres, car il supposera qu'il s'agit de deux fichiers et exécutera la commande deux fois, aucune autre méthode d'entrée à deux var n'est plus courte que ce que je peux voir, c'est donc probablement la réponse la plus courte possible.
ipcsv
est un alias pourImport-Csv
, prend un nom de fichier comme première entrée sans nom et le caractère délimiteur comme deuxième par défaut.Exécuter contre l' exemple des retours de la page wiki
la source
Python, 33 octets
la source
Haskell, 29 octets
Exemple d'utilisation:
(map.splitOn) " " ["to be or not","that is the question"]
->[["to","be","or","not"],["that","is","the","question"]]
.la source
05AB1E , 5 octets
Essayez-le en ligne!
Explication:
la source
JavaScript, 26 octets
Reçoit l'entrée au format (tableau de chaînes) (délimiteur)
Essayez-le en ligne!
la source
Mathematica, 11 octets
Fonction intégrée prenant deux arguments, une liste de chaînes et un caractère (et encore plus général que cela). Exemple d'utilisation:
les rendements
la source
MATLAB / Octave,
4125 octetsCrée une fonction anonyme nommée
ans
qui accepte la première entrée comme un tableau de cellules de chaînes et la deuxième entrée comme une chaîne.Essayez-le en ligne
la source
Cheddar, 19 octets
belle démonstration des capacités de bouclage. J'ai ajouté une nouvelle composition et f.op. blocs de sorte que permet un golf intéressant.
(=>:@.split)
est censé fonctionner mais il ne fonctionne pas :(la source
MATL,
14124 octetsEssayez-le sur MATL Online (le lien a une modification à la fin pour montrer la dimensionnalité du tableau de cellules en sortie).
Explication
la source
CJam, 5 octets
Explication:
la source
Ruby utilisant '-n', 17 + 1 = 18 octets
Comment ça fonctionne
*$*
répartit la chaîne et nous pouvons l'utiliser comme paramètre pour lasplit
fonctionchomp
mais toute autre solution semble être plus longue que cela.la source
Rebol, 33 octets
la source
GNU sed , 48 + 1 (drapeau r) = 49 octets
Essayez-le en ligne!
Dans sed, il n'y a pas de types de données, mais une représentation naturelle d'une liste serait une collection de lignes. En tant que tel, le format d'entrée se compose d'enregistrements DSV chacun sur une ligne distincte, avec le délimiteur présent sur la première ligne.
Explication: par conception, sed exécute le script autant de fois qu'il y a de lignes d'entrée
la source
REXX, 95 octets
Prend un nom de fichier et un délimiteur comme arguments, le contenu du fichier est mis en racine
o
.la source
APL (Dyalog) , 4 octets
Dans les versions jusqu'à et y compris 15.0, cela a besoin
⎕ML←3
qui est par défaut par beaucoup. À partir de la version 16.0, vous⊂
pouvez simplement le remplacer par⊆
le même effet.Prend le séparateur comme argument de gauche et DSV comme argument de droite.
Essayez-le en ligne!
≠
les inégalités (de l'argument de gauche et de l'argument de droite)⊂¨
partitionner chacun⊢
bon argumentPar partition signifie supprimer tous les éléments indiqués par un zéro correspondant dans l'argument de gauche et commencer une nouvelle partition chaque fois que le nombre correspondant dans l'argument de gauche est supérieur à son prédécesseur, c'est-à-dire sur chacun si l'argument de gauche est booléen, comme c'est le cas ici.
la source
R, 8 octets (2 voies)
R a deux fonctions intégrées qui répondent aux exigences de ce défi:
prend un vecteur de chaînes et un séparateur, et renvoie une liste de vecteurs des chaînes séparées.
prend un nom de fichier et un séparateur, et renvoie un bloc de données. Techniquement, cela peut être de 10 octets car il a besoin de l'option
header=F
pour ne pas lire les premiers éléments comme noms de colonne. Actuellement, le lien TIO lit depuis stdin.Essayez-les en ligne!
la source