Supprimez tous les mots répétitifs d'une phrase entrée.
L'entrée sera quelque chose comme cat dog cat dog bird dog Snake snake Snake
et la sortie devrait l'être cat dog bird Snake snake
. Il y aura toujours un seul espace séparant les mots.
L'ordre de sortie doit être le même que l'entrée. (Reportez-vous à l'exemple)
Vous n'avez pas besoin de gérer la ponctuation, mais la gestion des majuscules est requise.
Snake
etsnake
sont traités simplement comme différentsRéponses:
gs2 , 3 octets
Encodé en CP437 .
STDIN est poussé au début du programme.
,
le divise en espaces.É
estuniq
, qui filtre les doublons.-
joint par des espaces.la source
CJam, 7 caractères
Peut probablement être beaucoup plus court ... mais quoi que je n'aie presque jamais utilisé CJam. ^. ^
q
lit l'entrée,S/
se divise en espaces, en_&
double et applique un ET setwise (donc se débarrasser des doublons), etS*
se joint à nouveau sur l'espace.Lien interprète en ligne
la source
Haskell, 34 octets
Exemple d'utilisation:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.la source
APL,
2220 octetsCela crée une fonction monadique sans nom qui accepte une chaîne à droite et renvoie une chaîne.
Explication:
Essayez-le en ligne
Enregistré 2 octets grâce à Dennis!
la source
Rubis, 21 caractères
la source
JavaScript (ES6) 33
(voir cette réponse )
Testez l'exécution de l'extrait ci-dessous dans un navigateur compatible EcmaScript 6 (implémentation de Set, de l'opérateur de diffusion, des chaînes de modèle et des fonctions de flèche - j'utilise Firefox).
Remarque: la conversion en Set supprime tous les doublons et Set conserve l'ordre d'origine.
la source
TeaScript , 12 octets
TeaScript est JavaScript pour le golf.
C'est assez court. Il se divise sur chaque espace, filtre les doublons, puis rejoint.
Essayez-le en ligne
la source
tee-a script
outee script
?cdfghijklmnopstuvw
sont réservés aux variables, ils sont tous pré-initialisés à 0.b
est également réservé au nom d'une variable, il est pré-initialisé à une chaîne videPowerShell, 15 octets
Whoa, une entrée réelle où PowerShell est quelque peu compétitif? C'est impossible!
Prend la chaîne comme arguments d'entrée, redirige vers
Select-Object
avec l'-Unique
indicateur. Crache un tableau de chaînes, préservant l'ordre et la capitalisation comme demandé.Usage:
Si c'est trop "tricheur" en supposant que l'entrée peut être sous forme d'arguments de ligne de commande, alors optez pour ce qui suit, à
2421 octets (enregistré quelques octets grâce à blabb ) . Fait intéressant, l'utilisation de l'opérateur unaire dans cette direction s'avère également fonctionner si la chaîne d'entrée est délimitée par des guillemets ou comme arguments individuels, car la valeur-split
par défaut est constituée d'espaces. Prime.la source
Julia, 29 octets
Cela crée une fonction sans nom qui divise la chaîne en un vecteur sur les espaces, ne conserve que les éléments uniques (en préservant l'ordre) et joint à nouveau le tableau en une chaîne avec des espaces.
la source
R, 22 octets
Cela lit une chaîne de STDIN et la divise en un vecteur sur les espaces en utilisant
scan(,"")
, sélectionne uniquement les éléments uniques, puis les concatène en une chaîne et l'imprime dans STDOUT en utilisantcat
.la source
Rétine , 22 octets
Enregistrez le fichier avec un saut de ligne de fin et exécutez-le avec l'
-s
indicateur.C'est assez simple en ce qu'il correspond à un seul mot, et le lookbehind vérifie si ce même mot est apparu dans la chaîne auparavant. Le saut de ligne arrière fait que Retina fonctionne en mode Remplacer avec une chaîne de remplacement vide, supprimant toutes les correspondances.
la source
Mathematica,
4339 octetsla source
StringRiffle[]
.Keys@Counts
place deDeleteDuplicates
Keys@Counts
Préserve l'ordre?Counts[list]
donne une association dont les clés sont dans le même ordre qu'elles apparaissent en premier comme éléments de liste.Pyth - 9 octets
Eh bien, c'est pourquoi nous attendons tous Pyth5, aurait pu être de 5 octets.
Essayez-le en ligne ici .
la source
C ++ 11, 291 octets
Je ne vois pas beaucoup de réponses C ++ par rapport aux langages de golf, alors pourquoi pas. Notez que cela utilise des fonctionnalités C ++ 11, et donc si votre compilateur est
coincé dans les âges sombressuffisamment vieux, vous devrez peut-être passer un commutateur de compilation spécial pour lui faire utiliser la norme C ++ 11. Pourg++
, c'est-std=c++11
(seulement nécessaire pour les versions <5.2). Essayez-le en lignela source
set
? Il n'autorise aucun doublon par conception. Poussez-y.set
n'est pas garanti d'avoir les articles dans le même ordre qu'ils ont été ajoutés.K5, 9 octets
Pour info, c'est une fonction.
Explication
la source
Matlab: 18 octets
où
d
estd = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.Le résultat est
'cat' 'dog' 'bird' 'Snake' 'snake'
la source
d
est déjà affectée. Vous pouvez corriger cela en utilisant un descripteur de fonction:,@(d)unique(d,'stable')
au prix de 4 octets.Python 3, 55
Yeesh, c'est long. Malheureusement, Python
set
ne conserve pas l'ordre des éléments, nous devons donc faire le travail nous-mêmes. Nous parcourons les mots d'entrée, en conservant une listel
d'éléments qui ne sont pas encore inclusl
. Ensuite, nous imprimons le contenu de l'l
espace séparé.Une version chaîne de
l
ne fonctionnerait pas si certains mots sont des sous-chaînes d'autres mots.la source
C #, 38 octets
la source
s
, je pense que vous devriez l'obtenir comme argument.Perl 6, 14 octets
Dans l'ensemble, la seule façon d'écrire est de 21 octets
En tant qu'expression lambda, la plus courte est de 14 octets
Bien que la sortie soit une liste, si vous la placez dans un contexte de chaîne, elle mettra un espace entre les éléments. S'il était nécessaire de renvoyer une chaîne, vous pouvez simplement ajouter un
~
à l'avant~*.words.unique
.Si des extraits étaient autorisés, vous pouvez le raccourcir à 13 octets en supprimant le
*
.la source
Python 3,
8780 octetsil s'avère que la version complète du programme est plus courte
Je l'ai fait sans regex, je suis heureux
Essayez-le en ligne
la source
Lua, 94 octets
la source
... return""else l[b]=true end end...
par...return""end l[b]=""end...
.awk, 25
Production:
la source
JavaScript,
106102100 octets// beaucoup trop long pour JS :(
la source
Hassium , 91 octets
Exécuter en ligne et voir développé ici
la source
PHP
6459 octetsla source
explode()
→split()
,implode()
→join()
?split
être en train d'être privé, mais devinez que cela n'a pas d'importance pour le codegolving.AppleScript, 162 octets
Fait intéressant, cela est presque identique à la chose des caractères non répétitifs.
Je ne connaissais pas vraiment le mot-clé considéré avant cela. plus vous en savez...
la source
Burlesque, 6 octets
Assez simple: fractionner les mots, nub (nub = supprimer les doublons), reconvertir en mots.
la source
Gema, 21 personnages
(Très similaire à la solution de caractère unique , car il n'y a pas de tableaux dans Gema, donc permettre des fonctions uniques intégrées ne nous aide pas beaucoup.)
Exemple d'exécution:
la source
Scala,
4447 octetsEDIT : l'utilisation
toSet
pourrait ne pas préserver l'ordre, donc j'utilise maintenant distinct // qui me coûte juste 3 octets :(la source
PHP, 37 octets
En supposant que
$s
c'est la chaîne d'entrée.la source