Entfernen Sie alle sich wiederholenden Wörter aus einem eingegebenen Satz.
Die Eingabe wird ungefähr so sein cat dog cat dog bird dog Snake snake Snake
und die Ausgabe sollte so sein cat dog bird Snake snake
. Es wird immer ein einzelnes Leerzeichen geben, das die Wörter voneinander trennt.
Die Ausgabereihenfolge muss mit der Eingabereihenfolge übereinstimmen. (Siehe Beispiel)
Sie müssen nicht mit Interpunktion umgehen, aber Sie müssen mit Großbuchstaben umgehen.
Snake
undsnake
werden einfach als unterschiedlich behandeltAntworten:
gs2 , 3 bytes
In CP437 codiert .
STDIN wird beim Programmstart gedrückt.
,
teilt es über Leerzeichen auf.É
istuniq
, was Duplikate filtert.-
verbindet durch Leerzeichen.quelle
CJam, 7 Zeichen
Kann wahrscheinlich viel kürzer sein ... aber was auch immer ich CJam fast nie benutzt habe. ^. ^
q
Liest Eingaben,S/
teilt Leerzeichen auf,_&
dupliziert und wendet ein eindeutiges UND an (daher werden Duplikate entfernt) und verbindet sichS*
wieder mit dem Leerzeichen.Online-Dolmetscher-Link
quelle
Haskell, 34 Bytes
Anwendungsbeispiel:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.quelle
APL,
22 bis20 BytesDadurch wird eine unbenannte monadische Funktion erstellt, die eine Zeichenfolge auf der rechten Seite akzeptiert und eine Zeichenfolge zurückgibt.
Erläuterung:
Probieren Sie es online aus
2 Bytes gespart dank Dennis!
quelle
Rubin, 21 Zeichen
quelle
JavaScript (ES6) 33
(siehe diese Antwort )
Testen Sie das folgende Snippet in einem EcmaScript 6-kompatiblen Browser (Implementierung von Set-, Spread-Operator-, Template-Strings- und Pfeilfunktionen - ich verwende Firefox).
Hinweis: Bei der Konvertierung in Set werden alle Duplikate gelöscht, und Set behält die ursprüngliche Reihenfolge bei.
quelle
TeaScript , 12 Bytes
TeaScript ist JavaScript zum Golfen.
Das ist ziemlich kurz. Es teilt sich auf jedes Feld auf, filtert Duplikate heraus und fügt sich dann wieder zusammen.
Probieren Sie es online aus
quelle
tee-a script
odertee script
?cdfghijklmnopstuvw
sind für Variablen reserviert, sie sind alle auf 0b
PowerShell, 15 Bytes
Whoa, ein Eintrag, bei dem PowerShell etwas wettbewerbsfähig ist? Das ist unmöglich!
Nimmt die Zeichenfolge als Eingabeargumente und leitet sie
Select-Object
mit dem-Unique
Flag weiter. Spuckt eine Reihe von Zeichenfolgen aus, wobei die angeforderte Reihenfolge und Großschreibung beibehalten wird.Verwendung:
Wenn dies zu "betrügerisch" ist, wenn angenommen wird, dass die Eingabe als Befehlszeilenargument erfolgen kann, gehen Sie wie folgt vor:
2421 Bytes (einige Bytes werden dank blabb gespeichert ) . Interessanterweise funktioniert die Verwendung des unären Operators in dieser Richtung auch, wenn die Eingabezeichenfolge in Anführungszeichen oder als einzelne Argumente angegeben wird, da die Standardeinstellung-split
Leerzeichen enthält. Bonus.quelle
Julia, 29 Bytes
Dadurch wird eine unbenannte Funktion erstellt, die die Zeichenfolge in Leerzeichen in einen Vektor aufteilt, nur die eindeutigen Elemente beibehält (Reihenfolge beibehalten) und das Array wieder zu einer Zeichenfolge mit Leerzeichen zusammenfügt.
quelle
R, 22 Bytes
Dies liest einen String aus STDIN und teilt ihn mit in einen Vektor auf
scan(,"")
, wählt nur eindeutige Elemente aus, verknüpft sie dann zu einem String und druckt ihn mit in STDOUTcat
.quelle
Netzhaut , 22 Bytes
Speichern Sie die Datei mit einem nachfolgenden Zeilenumbruch und führen Sie sie mit dem
-s
Flag aus.Dies ist ziemlich einfach, da es mit einem einzelnen Wort übereinstimmt und der Lookbehind prüft, ob dasselbe Wort zuvor in der Zeichenfolge vorgekommen ist. Der nachfolgende Zeilenvorschub bewirkt, dass Retina im Ersetzungsmodus mit einer leeren Ersetzungszeichenfolge arbeitet und alle Übereinstimmungen entfernt.
quelle
Mathematica,
4339 Bytesquelle
StringRiffle[]
.Keys@Counts
anstelle von verwendenDeleteDuplicates
Keys@Counts
Ordnung?Counts[list]
gibt eine Assoziation an, deren Schlüssel in derselben Reihenfolge sind, in der sie zuerst als Elemente der Liste vorkommen.Pyth - 9 Bytes
Nun, deshalb warten wir alle auf Pyth5, es könnten 5 Bytes sein.
Probieren Sie es hier online aus .
quelle
C ++ 11, 291 Bytes
Ich sehe nicht viele C ++ - Antworten im Vergleich zu Golfsprachen. Warum also nicht? Beachten Sie, dass dies C ++ 11-Funktionen verwendet. Wenn Ihr Compiler also
im Dunkeln steckt undalt genug ist, müssen Sie möglicherweise einen speziellen Kompilierungsschalter übergeben, damit er den C ++ 11-Standard verwendet. Fürg++
ist es-std=c++11
(nur für Versionen <5.2 erforderlich). Probieren Sie es online ausquelle
set
? Es sind keine Duplikate zulässig. Einfach hineinschieben.set
wird nicht garantiert, dass die Artikel in der Reihenfolge sind, in der sie hinzugefügt wurden.K5, 9 Bytes
Zu Ihrer Information, dies ist eine Funktion.
Erläuterung
quelle
Matlab: 18 Bytes
wo
d
istd = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.Das Ergebnis ist
'cat' 'dog' 'bird' 'Snake' 'snake'
quelle
d
bereits zugewiesen ist. Sie können dies korrigieren, indem Sie ein Funktionshandle:@(d)unique(d,'stable')
zum Preis von 4 Byte verwenden.Python 3, 55
Ja, das ist lang. Leider
set
behält Python die Reihenfolge der Elemente nicht bei, sodass wir die Arbeit selbst erledigen müssen. Wir durchlaufen die eingegebenen Wörter und führen eine Listel
der Elemente, die noch nicht enthalten sindl
. Dann drucken wir den Inhalt vonl
Leerzeichen getrennt.Eine String-Version von
l
würde nicht funktionieren, wenn einige Wörter Teilfolgen anderer Wörter sind.quelle
C #, 38 Bytes
quelle
s
ist. Ich denke, Sie sollten sie als Argument verwenden.Perl 6, 14 Bytes
Als ganzes Programm ist die einzige Möglichkeit, wie Sie es schreiben würden, 21 Bytes lang
Als Lambda-Ausdruck beträgt der kürzeste 14 Byte
Während es sich bei der Ausgabe um eine Liste handelt, wird zwischen den Elementen ein Leerzeichen eingefügt, wenn Sie sie in einen stringierenden Kontext stellen. Wenn eine Zeichenfolge zurückgegeben werden muss, können Sie
~
der Vorderseite einfach ein hinzufügen~*.words.unique
.Wenn Ausschnitte zulässig wären, könnten Sie sie durch Entfernen des Befehls auf 13 Byte verkürzen
*
.quelle
Python 3,
8780 Bytesstellt sich heraus, dass die Vollversion kürzer ist
Habe es ohne Regex gemacht, ich bin glücklich
Probieren Sie es online aus
quelle
Lua, 94 Bytes
quelle
... return""else l[b]=true end end...
mit...return""end l[b]=""end...
.awk, 25
Ausgabe:
quelle
JavaScript,
106102100 Bytes// viel zu lang für JS :(
quelle
Hassium , 91 Bytes
Online laufen und hier erweitert sehen
quelle
PHP
6459 Bytesquelle
explode()
→split()
,implode()
→join()
?split
zwar entzogen zu sein, aber das spielt wohl keine Rolle für das Codegolving.AppleScript, 162 Byte
Interessanterweise ist dies fast identisch mit der nicht wiederholenden Charaktersache.
Ich kannte das Keyword, über das ich nachgedacht habe, vorher nicht. je mehr du weisst...
quelle
Burlesque, 6 Bytes
Ganz einfach: Wörter teilen, Nub (Nub = Duplikate entfernen), zurück in Wörter konvertieren.
quelle
Gema, 21 Zeichen
(Sehr ähnlich wie bei der Lösung für eindeutige Zeichen , da es in Gema keine Arrays gibt. Daher hilft es uns nicht viel, integrierte eindeutige Funktionen zuzulassen.)
Probelauf:
quelle
Scala,
4447 BytesBEARBEITEN : mit wird
toSet
die Reihenfolge möglicherweise nicht beibehalten, daher verwende ich jetzt ein bestimmtes //, das mich nur 3 Byte gekostet hat :(quelle
PHP, 37 Bytes
Angenommen, es
$s
handelt sich um die Eingabezeichenfolge.quelle