Eliminar todas las palabras que se repiten de una oración ingresada.
La entrada será algo así cat dog cat dog bird dog Snake snake Snake
y la salida debería ser cat dog bird Snake snake
. Siempre habrá un solo espacio para separar las palabras.
El orden de salida debe ser el mismo que el de entrada. (Consulte el ejemplo)
No es necesario que maneje la puntuación, pero se requiere el manejo de mayúsculas.
Snake
ysnake
son tratados simplemente como diferentesRespuestas:
gs2 , 3 bytes
Codificado en CP437 .
STDIN se empuja al inicio del programa.
,
lo divide en espacios.É
es deciruniq
, que filtra los duplicados.-
se une por espacios.fuente
CJam, 7 caracteres
Probablemente puede ser mucho más corto ... pero lo que sea que casi nunca he usado CJam. ^. ^
q
lee entradas, seS/
divide en espacios,_&
duplica y aplica un AND setwise (por lo tanto, elimina los duplicados) yS*
vuelve a unirse en el espacio.Enlace de intérprete en línea
fuente
Haskell, 34 bytes
Ejemplo de uso:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.fuente
APL,
2220 bytesEsto crea una función monádica sin nombre que acepta una cadena a la derecha y devuelve una cadena.
Explicación:
Pruébalo en línea
¡Ahorré 2 bytes gracias a Dennis!
fuente
Ruby, 21 caracteres
fuente
JavaScript (ES6) 33
(ver esta respuesta )
Pruebe a ejecutar el fragmento a continuación en un navegador compatible con EcmaScript 6 (implementando Set, operador de propagación, cadenas de plantilla y funciones de flecha: uso Firefox).
Nota: la conversión a Establecer descarta todos los duplicados y Establecer mantiene el orden original.
fuente
TeaScript , 12 bytes
TeaScript es JavaScript para jugar al golf.
Esto es bastante corto. Se divide en cada espacio, filtra los duplicados y luego vuelve a unirse.
Pruébalo en línea
fuente
tee-a script
otee script
?cdfghijklmnopstuvw
están reservados para variables, todos están preinicializados a 0.b
también están reservados para un nombre de variable, se preinicializan a una cadena vacíaPowerShell, 15 bytes
Whoa, una entrada real donde PowerShell es algo competitivo? Eso es imposible!
Toma la cadena como argumentos de entrada, canaliza
Select-Object
con la-Unique
bandera. Escupe una serie de cadenas, preservando el orden y las mayúsculas según lo solicitado.Uso:
Si esto es demasiado "engañoso" al suponer que la entrada puede ser como argumentos de línea de comandos, vaya a lo siguiente, a
2421 Bytes (guardado algunos bytes gracias a blabb ) . Curiosamente, el uso del operador unario en esta dirección también funciona si la cadena de entrada se delimita con comillas o como argumentos individuales, ya que el valor predeterminado-split
es por espacios. Prima.fuente
Julia, 29 bytes
Esto crea una función sin nombre que divide la cadena en un vector en espacios, mantiene solo los elementos únicos (preservando el orden) y une la matriz nuevamente en una cadena con espacios.
fuente
R, 22 bytes
Esto lee una cadena de STDIN y la divide en un vector en espacios usando
scan(,"")
, selecciona solo elementos únicos, luego los concatena en una cadena e imprime en STDOUT usandocat
.fuente
Retina , 22 bytes
Guarde el archivo con un salto de línea final y ejecútelo con la
-s
bandera.Esto es bastante sencillo en el sentido de que coincide con una sola palabra, y el análisis posterior verifica si esa misma palabra ha aparecido anteriormente en la cadena. El avance de línea final hace que Retina funcione en modo Reemplazar con una cadena de reemplazo vacía, eliminando todas las coincidencias.
fuente
Mathematica,
4339 bytesfuente
StringRiffle[]
.Keys@Counts
lugar deDeleteDuplicates
Keys@Counts
Preserva el orden?Counts[list]
proporciona una asociación cuyas claves están en el mismo orden en que aparecen por primera vez como elementos de la lista.Pyth - 9 bytes
Bueno, esta es la razón por la que todos estamos esperando Pyth5, podría haber sido de 5 bytes.
Pruébelo en línea aquí .
fuente
C ++ 11, 291 bytes
No veo muchas respuestas de C ++ en comparación con los lenguajes de golf, entonces, ¿por qué no? Tenga en cuenta que esto usa las características de C ++ 11 y, por lo tanto, si su compilador está
atascado en las edades oscuras losuficientemente viejo, es posible que deba pasar un interruptor de compilación especial para que use el estándar C ++ 11. Parag++
, es-std=c++11
(solo necesario para versiones <5.2). Pruébalo en líneafuente
set
? No permite duplicados por diseño. Solo empújalo.set
se garantiza que @black A tenga los artículos en el mismo orden en que se agregaron.K5, 9 bytes
FYI, esta es una función.
Explicación
fuente
Matlab: 18 bytes
donde
d
estád = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.El resultado es
'cat' 'dog' 'bird' 'Snake' 'snake'
fuente
d
ya está asignada. Puede rectificar esto utilizando un controlador de función:,@(d)unique(d,'stable')
a un costo de 4 bytes.Pitón 3, 55
Sí, esto es largo. Desafortunadamente, Python
set
no mantiene el orden de los elementos, por lo que tenemos que hacer el trabajo nosotros mismos. Repetimos las palabras de entrada, manteniendo una listal
de elementos que aún no están incluidosl
. Luego, imprimimos el contenido del
espacios separados.Una versión de cadena de
l
no funcionaría si algunas palabras son subcadenas de otras palabras.fuente
C #, 38 bytes
fuente
s
, creo que debería obtenerla como argumento.Perl 6, 14 bytes
Como programa completo, la única forma en que lo escribiría es de 21 bytes de longitud
Como expresión lambda, el más corto es 14 bytes
Si bien el resultado es una Lista, si lo coloca en un contexto de cadena, colocará un espacio entre los elementos. Si fuera un requisito devolver una cadena, simplemente podría agregar una
~
al frente~*.words.unique
.Si se permitieran fragmentos, podría acortarlo a 13 bytes quitando el
*
.fuente
Python 3,
8780 bytesResulta que la versión completa del programa es más corta
Lo hice sin expresiones regulares, estoy feliz
Pruébalo en línea
fuente
Lua, 94 bytes
fuente
... return""else l[b]=true end end...
con...return""end l[b]=""end...
.awk, 25
Salida:
fuente
JavaScript,
106102100 bytes// demasiado tiempo para JS :(
fuente
Hassium , 91 bytes
Ejecute en línea y vea expandido aquí
fuente
PHP
6459 bytesfuente
explode()
→split()
,implode()
→join()
?split
Sin embargo, parece que se está depicando, pero supongo que eso no importa para codegolving.AppleScript, 162 bytes
Curiosamente, esto es casi idéntico al de los personajes que no se repiten.
En realidad no conocía la palabra clave de consideración antes de esto. cuanto más sepas ...
fuente
Burlesque, 6 bytes
Más bien simple: dividir palabras, nub (nub = eliminar duplicados), convertir de nuevo a palabras.
fuente
Gema, 21 personajes
(Muy similar a la solución de caracteres únicos , ya que no hay matrices en Gema, por lo que permitir funciones únicas incorporadas no nos ayuda mucho).
Ejecución de muestra:
fuente
Scala,
4447 bytesEDITAR : el uso
toSet
podría no preservar el orden, por lo que ahora estoy usando distintos // que solo me costaron 3 bytes :(fuente
PHP, 37 bytes
Asumiendo
$s
es la cadena de entrada.fuente