Remova todas as palavras repetidas de uma frase inserida.
A entrada será algo parecido cat dog cat dog bird dog Snake snake Snake
e a saída deve ser cat dog bird Snake snake
. Sempre haverá um único espaço separando as palavras.
A ordem de saída deve ser igual à entrada. (Consulte o exemplo)
Você não precisa lidar com pontuação, mas é necessário o tratamento de letras maiúsculas.
Snake
esnake
são tratados simplesmente como diferenteRespostas:
gs2 , 3 bytes
Codificado no CP437 .
STDIN é pressionado no início do programa.
,
divide sobre espaços.É
éuniq
, que filtra duplicatas.-
junta-se por espaços.fonte
CJam, 7 caracteres
Provavelmente pode ser muito mais curto ... mas seja o que for que eu quase nunca usei o CJam. ^. ^
q
lê entrada,S/
divide em espaços,_&
duplica e aplica um AND setwise (portanto, se livra das duplicatas) eS*
se junta novamente ao espaço.Link de intérprete online
fonte
Haskell, 34 bytes
Exemplo de uso:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.fonte
APL,
2220 bytesIsso cria uma função monádica sem nome que aceita uma string à direita e retorna uma string.
Explicação:
Experimente online
Economizou 2 bytes graças a Dennis!
fonte
Ruby, 21 caracteres
fonte
JavaScript (ES6) 33
(veja esta resposta )
Teste a execução do snippet abaixo em um navegador compatível com EcmaScript 6 (implementando Set, spread spread, strings de modelo e funções de seta - eu uso o Firefox).
Nota: a conversão para Set elimina todas as duplicatas e Set mantém a ordem original.
fonte
TeaScript , 12 bytes
TeaScript é JavaScript para jogar golfe.
Isso é bem curto. Ele se divide em cada espaço, filtra as duplicatas e depois se junta novamente.
Experimente online
fonte
tee-a script
outee script
?cdfghijklmnopstuvw
são reservados para variáveis, todos eles são pré-inicializado com 0.b
também é reservado para um nome de variável, é pré-inicializada para uma seqüência vaziaPowerShell, 15 bytes
Whoa, uma entrada real em que o PowerShell é um pouco competitivo? Isso é impossível!
Leva a string como argumentos de entrada, passa para
Select-Object
a-Unique
bandeira. Cospe uma matriz de strings, preservando a ordem e a capitalização conforme solicitado.Uso:
Se isso for muito "barato", assumindo que a entrada possa ser como argumentos da linha de comando, siga o seguinte, em
2421 Bytes (salvou alguns bytes graças ao blabb ) . Curiosamente, o uso do operador unário nessa direção também funcionará se a sequência de entrada for demarcada com aspas ou como argumentos individuais, pois o padrão-split
é por espaços. Bônus.fonte
Julia, 29 bytes
Isso cria uma função sem nome que divide a string em um vetor em espaços, mantém apenas os elementos exclusivos (ordem de preservação) e junta a matriz novamente a uma string com espaços.
fonte
R, 22 bytes
Isso lê uma string de STDIN e a divide em um vetor em espaços usando
scan(,"")
, seleciona apenas elementos exclusivos, concatena-os em uma string e imprime-a em STDOUT usandocat
.fonte
Retina , 22 bytes
Salve o arquivo com um avanço de linha à direita e execute-o com o
-s
sinalizador.Isso é bastante direto, pois corresponde a uma única palavra, e o lookbehind verifica se a mesma palavra já apareceu na string anteriormente. O avanço de linha à direita faz com que o Retina funcione no modo Substituir por uma sequência de substituição vazia, removendo todas as correspondências.
fonte
Mathematica,
4339 bytesfonte
StringRiffle[]
.Keys@Counts
vez deDeleteDuplicates
Keys@Counts
Preserva a ordem?Counts[list]
fornece uma associação cujas chaves estão na mesma ordem em que ocorrem pela primeira vez como elementos da lista.Pitão - 9 bytes
Bem, é por isso que todos estamos esperando pelo Pyth5, poderia ter sido de 5 bytes.
Experimente online aqui .
fonte
C ++ 11, 291 bytes
Não vejo muitas respostas em C ++ em comparação com as linguagens de golfe, por que não? Observe que isso usa os recursos do C ++ 11 e, portanto, se o seu compilador estiver
preso na idade das trevascom idade suficiente, talvez seja necessário passar por uma opção de compilação especial para que ele use o padrão C ++ 11. Poisg++
é-std=c++11
(é necessário apenas para versões <5.2). Experimente onlinefonte
set
? Ele não permite duplicatas por design. Apenas empurre para dentro.set
é garantido que o @ A preto tenha os itens na mesma ordem em que foram adicionados.K5, 9 bytes
Para sua informação, esta é uma função.
Explicação
fonte
Matlab: 18 bytes
onde
d
éd = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.O resultado é
'cat' 'dog' 'bird' 'Snake' 'snake'
fonte
d
já está atribuída. Você pode corrigir isso usando um identificador de função:,@(d)unique(d,'stable')
ao custo de 4 bytes.Python 3, 55
Sim, isso é longo. Infelizmente, o Python
set
não mantém a ordem dos elementos, por isso temos que fazer o trabalho sozinhos. Repetimos as palavras de entrada, mantendo uma listal
de elementos que ainda não estão inseridosl
. Em seguida, imprimimos o conteúdo dol
espaço separado.Uma versão em cadeia de caracteres
l
não funcionaria se algumas palavras fossem substrings de outras palavras.fonte
C #, 38 bytes
fonte
s
, acho que você deve obtê-la como argumento.Perl 6, 14 bytes
Como um programa inteiro, a única maneira de escrever é de 21 bytes
Como uma expressão lambda, o menor é 14 bytes
Enquanto a saída for uma Lista, se você a colocar em um contexto de stringing, ela colocará um espaço entre os elementos. Se fosse necessário retornar uma string, você poderia simplesmente adicionar
~
a na frente~*.words.unique
.Se snippets forem permitidos, você poderá reduzi-lo para 13 bytes removendo o
*
.fonte
Python 3,
8780 bytesAcontece que a versão completa do programa é mais curta
Fiz isso sem regex, estou feliz
Experimente online
fonte
Lua, 94 bytes
fonte
... return""else l[b]=true end end...
por...return""end l[b]=""end...
.awk, 25
Resultado:
fonte
JavaScript,
106102100 bytes// tempo demais para JS :(
fonte
Hássio , 91 bytes
Execute on-line e veja expandido aqui
fonte
PHP
6459 bytesfonte
explode()
→split()
,implode()
→join()
?split
está sendo privado, mas acho que isso não importa para a codificação.AppleScript, 162 bytes
Curiosamente, isso é quase idêntico ao dos personagens que não se repetem.
Na verdade, eu não conhecia a palavra-chave considerando antes disso. quanto mais você sabe...
fonte
Burlesco, 6 bytes
Bastante simples: divida as palavras, nub (nub = remove duplicatas), converta novamente em palavras.
fonte
Gema, 21 caracteres
(Muito semelhante à solução de caractere exclusivo , como não há matrizes no Gema, portanto, permitir funções exclusivas incorporadas não nos ajuda muito.)
Exemplo de execução:
fonte
Scala,
4447 bytesEDIT : usando
toSet
pode não preservar a ordem, então agora estou usando // distintos que me custam apenas 3 bytes :(fonte
PHP, 37 bytes
Assumindo
$s
é a sequência de entrada.fonte