Usuń wszystkie powtarzające się słowa z wprowadzonego zdania.
Dane wejściowe będą podobne, cat dog cat dog bird dog Snake snake Snake
a dane wyjściowe powinny cat dog bird Snake snake
. Zawsze będzie pojedyncza spacja oddzielająca słowa.
Kolejność wyjściowa musi być taka sama jak wejściowa. (Patrz przykład)
Nie musisz obsługiwać znaków interpunkcyjnych, ale wymagana jest obsługa wielkich liter.
Snake
isnake
są traktowane po prostu jako innegoOdpowiedzi:
gs2 , 3 bajty
Zakodowane w CP437 .
STDIN jest wypychany na początku programu.
,
dzieli go na spacje.É
touniq
, który filtruje duplikaty.-
łączy spacjami.źródło
CJam, 7 znaków
Prawdopodobnie może być znacznie krótszy ... ale cokolwiek prawie nigdy nie użyłem CJam. ^. ^
q
odczytuje dane wejściowe,S/
dzieli się na spacje,_&
duplikuje i stosuje ustalone ORAZ (pozbywając się duplikatów) iS*
ponownie łączy się w spację.Link do tłumacza online
źródło
Haskell, 34 bajty
Przykład użycia:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.źródło
APL,
2220 bajtówTworzy to nienazwaną funkcję monadyczną, która akceptuje ciąg po prawej stronie i zwraca ciąg.
Wyjaśnienie:
Wypróbuj online
Zaoszczędzono 2 bajty dzięki Dennisowi!
źródło
Ruby, 21 znaków
źródło
JavaScript (ES6) 33
(zobacz tę odpowiedź )
Przetestuj poniższy fragment kodu w przeglądarce zgodnej z EcmaScript 6 (implementując operatora Set, spread, ciągi szablonów i funkcje strzałek - używam Firefox).
Uwaga: konwersja do Set upuszcza wszystkie duplikaty, a Set zachowuje oryginalne zamówienie.
źródło
TeaScript , 12 bajtów
TeaScript to JavaScript do gry w golfa.
To jest dość krótkie. Dzieli się na każdym miejscu, odfiltrowuje duplikaty, a następnie dołącza ponownie.
Wypróbuj online
źródło
tee-a script
czytee script
?cdfghijklmnopstuvw
są zarezerwowane dla zmiennych, wszystkie są wstępnie zainicjowane na 0.b
jest również zarezerwowane dla nazwy zmiennej, jest wstępnie zainicjowane na pusty ciąg znakówPowerShell, 15 bajtów
Whoa, prawdziwy wpis, w którym PowerShell jest nieco konkurencyjny? To niemożliwe!
Przyjmuje ciąg jako argumenty wejściowe, do rur
Select-Object
z-Unique
flagą. Wydziela tablicę ciągów, zachowując porządek i wielkie litery zgodnie z żądaniem.Stosowanie:
Jeśli jest to zbyt „oszukańcze”, zakładając, że dane wejściowe mogą być argumentami wiersza poleceń, przejdź do następujących, w
2421 bajtach (zapisano niektóre bajty dzięki blabb ) . Co ciekawe, użycie jednoargumentowego operatora w tym kierunku działa również, jeśli ciąg wejściowy jest wyznaczony cudzysłowami lub jako pojedyncze argumenty, ponieważ domyślnie-split
są to spacje. Premia.źródło
Julia, 29 bajtów
Tworzy to nienazwaną funkcję, która dzieli ciąg na wektor na spacje, zachowuje tylko unikalne elementy (zachowując porządek) i ponownie łączy tablicę w ciąg ze spacjami.
źródło
R, 22 bajty
Odczytuje ciąg ze STDIN i dzieli go na wektor na spacje za pomocą
scan(,"")
, wybiera tylko unikalne elementy, a następnie łączy je w ciąg i drukuje za pomocą STDOUTcat
.źródło
Siatkówka , 22 bajty
Zapisz plik z końcowym podawaniem linii i uruchom go z
-s
flagą.Jest to dość proste, ponieważ pasuje do jednego słowa, a lookbehind sprawdza, czy to samo słowo pojawiło się wcześniej w ciągu. Końcowe podawanie linii powoduje, że siatkówka działa w trybie zamiany z pustym ciągiem zastępującym, usuwając wszystkie dopasowania.
źródło
Mathematica,
4339 bajtówźródło
StringRiffle[]
.Keys@Counts
zamiastDeleteDuplicates
Keys@Counts
zachowuje porządek?Counts[list]
podaje skojarzenie, którego klucze są w tej samej kolejności, w jakiej występują po raz pierwszy jako elementy listy.Pyth - 9 bajtów
Właśnie dlatego wszyscy czekamy na Pyth5, może być 5 bajtów.
Wypróbuj online tutaj .
źródło
C ++ 11, 291 bajtów
Nie widzę wielu odpowiedzi w C ++ w porównaniu do języków golfowych, więc dlaczego nie. Zauważ, że używa to funkcji C ++ 11, więc jeśli twój kompilator
utknie wdostatecznie starymwieku, konieczne może być przekazanie specjalnego przełącznika kompilacji, aby mógł używać standardu C ++ 11. Ponieważg++
jest-std=c++11
(potrzebny tylko dla wersji <5.2). Wypróbuj onlineźródło
set
? To nie pozwala na duplikaty według projektu. Po prostu wepchnij się w to.set
nie ma gwarancji, że elementy będą w tej samej kolejności, w jakiej zostały dodane.K5, 9 bajtów
Do Twojej wiadomości, to jest funkcja.
Wyjaśnienie
źródło
Matlab: 18 bajtów
gdzie
d
jestd = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.Wynik to
'cat' 'dog' 'bird' 'Snake' 'snake'
źródło
d
jest już przypisana. Możesz to naprawić za pomocą uchwytu funkcji:@(d)unique(d,'stable')
kosztem 4 bajtów.Python 3, 55
Tak, to długo. Niestety, Python
set
nie zachowuje kolejności elementów, więc musimy wykonać pracę sami. Powtarzamy słowa wejściowe, zachowując listęl
elementów, których jeszcze nie mal
. Następnie drukujemy zawartośćl
rozdzieloną spacjami.Wersja łańcuchowa
l
nie działałaby, jeśli niektóre słowa są podciągami innych słów.źródło
C #, 38 bajtów
źródło
s
, myślę, że powinieneś wziąć je jako argument.Perl 6, 14 bajtów
Jako cały program jedynym sposobem na napisanie tego jest 21 bajtów
Jako wyrażenie lambda najkrótszy ma 14 bajtów
Mimo że wynikiem jest lista, umieszczenie jej w kontekście strunkującym spowoduje umieszczenie spacji między elementami. Jeśli wymagane było zwrócenie ciągu, można po prostu dodać znak
~
z przodu~*.words.unique
.Jeśli fragmenty byłyby dozwolone, możesz skrócić je do 13 bajtów, usuwając plik
*
.źródło
Python 3,
8780 bajtówokazuje się, że pełna wersja programu jest krótsza
Zrobiłem to bez wyrażenia regularnego, jestem szczęśliwy
Wypróbuj online
źródło
Lua, 94 bajty
źródło
... return""else l[b]=true end end...
z...return""end l[b]=""end...
.awk, 25
Wynik:
źródło
JavaScript,
106102100 bajtów// zdecydowanie za długo dla JS :(
źródło
Has , 91 bajtów
Uruchom online i zobacz rozwinięty tutaj
źródło
PHP
6459 bajtówźródło
explode()
→split()
,implode()
→join()
?split
się, że jest deprecjonowany, ale zgadnij, że to nie ma znaczenia dla kodowania.AppleScript, 162 bajty
Co ciekawe, jest to prawie identyczne jak w przypadku postaci bez powtarzania.
Wcześniej nie znałem rozważanego słowa kluczowego. im więcej wiesz...
źródło
Burleska, 6 bajtów
Raczej proste: dzielenie słów, nub (nub = usuń duplikaty), konwersja z powrotem na słowa.
źródło
Gema, 21 znaków
(Bardzo podobny do unikalnego rozwiązania postaci , ponieważ w Gema nie ma tablic, więc umożliwienie wbudowanych unikalnych funkcji niewiele nam pomoże.)
Przykładowy przebieg:
źródło
Scala,
4447 bajtówEDYCJA : używanie
toSet
może nie zachowywać porządku, więc teraz używam odrębnego //, który kosztuje mnie tylko 3 bajty :(źródło
PHP, 37 bajtów
Zakładając, że
$s
jest łańcuchem wejściowym.źródło