Um pouco mais que um inverso disso .
In: dados DSV de várias linhas e um único caractere delimitador. O DSV pode ser usado como arquivo, nome de arquivo, sequência separada por quebra de linha, lista de sequências, etc. Todos os registros têm o mesmo número de campos e nenhum campo está vazio. Os dados não contêm o caractere delimitador e não há mecanismo de citação ou escape.
Out: Uma estrutura de dados representando o DSV, por exemplo, uma lista de listas de strings ou uma matriz de strings.
Exemplos
["here is,some,sample","data,delimited,by commas"]
e ","
:
[["here is","some","sample"],["data","delimited","by commas"]]
["hello;\"","\";world","\";\""]
e ";"
:
[["hello","\""],["\"","world"],["\"","\""]]
(escapa porque este exemplo usa JSON)
["to be or not","that is the question"]
e " "
:
[["to","be","or","not"],["that","is","the","question"]]
",for,example,this,string,"
Respostas:
Geléia ,
32 bytesDennis ressalta que, embora a solução de 2 bytes pareça não funcionar, o próprio link diádico funciona e é, na verdade, a maneira como os argumentos da linha de comando são analisados que a fazem parecer dessa maneira.
Experimente Online! - rodapé chama a função com esquerda e direita definidas explicitamente e formata como uma grade *.
Exatamente como o abaixo, exceto as
ṣ
divisões nas ocorrências do argumento correto e não nas sublistas iguais ao argumento correto.O rodapé de 3 bytes exibe o resultado como uma grade *.
Um link diádico (função) que leva a lista DSV à esquerda e o delimitador à direita.
Quão?
* Como um programa completo, a saída implícita simplesmente "esmagaria" todos os caracteres, de modo que o rodapé do link TIO chama o link como díade e usa
G
para formatar bem o resultado.fonte
Japonês , 3 bytes
Teste online! (Usa o
-Q
sinalizador para imprimir a saída)fonte
Powershell,
2522/23 bytesDuas opções, uma apenas chama split no primeiro argumento, usando o segundo argumento como um valor delim.
Um byte a mais, incorporado para analisar csvs, leva o nome do arquivo como primeiro argumento e delimita como segundo.
-2 porque não requer o parâmetro
-Delimiter
(-D
) e o assumirá por padrão.Infelizmente, o powershell não pode passar uma matriz de dois parâmetros, pois assumirá que ambos são arquivos e executará o comando duas vezes; nenhum outro método de entrada com duas var é mais curto do que isso, tanto quanto eu vejo, então é provável a resposta mais curta possível.
ipcsv
é um alias paraImport-Csv
, usa um nome de arquivo como a primeira entrada sem nome e o caractere delim como a segunda por comportamento padrão.Executar contra o exemplo da página wiki retorna
fonte
Python, 33 bytes
fonte
Haskell, 29 bytes
Exemplo de uso:
(map.splitOn) " " ["to be or not","that is the question"]
->[["to","be","or","not"],["that","is","the","question"]]
.fonte
05AB1E , 5 bytes
Experimente online!
Explicação:
fonte
JavaScript, 26 bytes
Recebe entrada no formato (array de strings) (delimitador)
Experimente online!
fonte
Mathematica, 11 bytes
Função incorporada que recebe dois argumentos, uma lista de cadeias e um caractere (e ainda mais geral que isso). Exemplo de uso:
rendimentos
fonte
MATLAB / Oitava,
4125 bytesCria uma função anônima nomeada
ans
que aceita a primeira entrada como uma matriz de células e a segunda entrada como uma sequência.Experimente Online
fonte
Queijo Cheddar, 19 bytes
boa demonstração de habilidades de loop. Eu adicionei nova composição e f.op. blocos de modo que permite golfe interessante.
(=>:@.split)
deve funcionar, mas não funciona :(fonte
MATL,
14124 bytesExperimente no MATL Online (o link tem uma modificação no final para mostrar a dimensionalidade da matriz de células de saída).
Explicação
fonte
CJam, 5 bytes
Explicação:
fonte
Ruby usando '-n', 17 + 1 = 18 bytes
Como funciona
*$*
divide a string e podemos usá-la como parâmetro para asplit
funçãochomp
mas qualquer outra solução parece ser mais longa que isso.fonte
Rebol, 33 bytes
fonte
GNU sed , 48 + 1 (sinalizador r) = 49 bytes
Experimente online!
No sed, não há tipos de dados, mas uma representação natural de uma lista seria uma coleção de linhas. Como tal, o formato de entrada consiste em registros DSV, cada um em uma linha separada, com o delimitador presente na primeira linha.
Explicação: por design, sed executa o script quantas vezes houver linhas de entrada
fonte
REXX, 95 bytes
Pega um nome de arquivo e um delimitador como argumentos, o conteúdo do arquivo é colocado no radical
o
.fonte
APL (Dyalog) , 4 bytes
Nas versões até 15.0, inclusive, isso precisa do
⎕ML←3
padrão de muitos. A partir da versão 16.0⊂
pode ser substituída apenas pelo⊆
mesmo efeito.Leva o separador como argumento à esquerda e DSV como argumento à direita.
Experimente online!
≠
as desigualdades (do argumento da esquerda e do argumento da direita)⊂¨
particionar cada⊢
argumento certoPor partição significa remover todos os elementos indicados por um zero correspondente no argumento esquerdo e iniciar uma nova partição sempre que o número correspondente no argumento esquerdo for maior que seu predecessor, ou seja, em cada um deles se o argumento esquerdo for booleano, como é o caso aqui.
fonte
R, 8 bytes (2 vias)
O R possui duas funções internas que atendem aos requisitos deste desafio:
pega um vetor de cadeias e um separador e retorna uma lista de vetores das cadeias separadas.
pega um nome de arquivo e um separador e retorna um quadro de dados. Tecnicamente, isso pode ter 10 bytes porque precisa da opção
header=F
para não ler os primeiros elementos como os nomes das colunas. Atualmente, o link do TIO lê de stdin.Experimente estes online!
fonte