Wprowadzenie
Zobaczmy następującą tablicę:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Grupa składa się z tych samych cyfr obok siebie. W powyższej tablicy istnieje 5 różnych grup:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
1, 1, 1
2, 2
1, 1, 1, 1
2, 2, 2
1, 1, 1
Najmniejsza grupa z nich to [2, 2]
, więc wyprowadzamy [2, 2]
.
Weźmy inny przykład:
[3, 3, 3, 4, 4, 4, 4, 5, 5, 4, 4, 3, 3, 4, 4]
3, 3, 3
4, 4, 4, 4
5, 5
4, 4
3, 3
4, 4
Widać, że istnieje wiele grup o tej samej długości. Najmniejsze grupy to:
[3, 3], [4, 4], [4, 4] and [5, 5].
Więc po prostu wysyłamy dane [3, 3], [4, 4], [4, 4], [5, 5]
w dowolnym rozsądnym formacie. Możesz wydrukować je w dowolnej kolejności.
Zadanie
Biorąc pod uwagę tablicę składającą się tylko z dodatnich liczb całkowitych, wypisz najmniejszą grupę (grupy) z tablicy. Możesz założyć, że tablica będzie zawierać co najmniej 1 liczbę całkowitą.
Przypadki testowe
Input: [1, 1, 2, 2, 3, 3, 4]
Output: [4]
Input: [1]
Output: [1]
Input: [1, 1, 10, 10, 10, 100, 100]
Output: [1, 1], [100, 100]
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
11101010100100
nie wydaje się poprawny dla danych wejściowych: p.Odpowiedzi:
Pyth
141211Pakiet testowy
2 bajty dzięki Jakube! I 1 bajt dzięki isaacg!
Niestety, dekodowanie długości przebiegu nie robi dokładnie tego, co chcemy, ale będzie działać z niewielkim obejściem, ale to sprawia, że jest nieco dłuższy niż ręczne wdrożenie:
Podziękowania dla Jakube za to.
źródło
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 bajty
Jest to kompozycja dwóch funkcji, które można zastosować do listy.
Split
pobiera wszystkie grupy kolejnych liczb iMinimalBy[Length]
wybiera te o minimalnej długości.źródło
Haskell, 38 bajtów
Przykład użycia:
argmins length.group $ [3,3,3,4,4,4,4,5,5,4,4,3,3,4,4]
->[[4,4],[3,3],[4,4],[5,5]]
.Zbuduj grupy równych elementów i znajdź te o minimalnej długości.
źródło
Data.Lists
?argmins
na przykład pochodzi z Data.List.Extras.Agrmax .Python 2, 120 bajtów
Pobiera dane wejściowe jako ciąg liczb całkowitych oddzielonych spacją ze spacją końcową i wyświetla listę list ciągów znaków. Strategia polega na znajdowaniu grup za pomocą wyrażenia regularnego
(\d+ )\1*
(które pasuje do jednej lub więcej liczb całkowitych oddzielonych spacją, ze spacją końcową), a następnie dzieleniu ich na spacje na listy liczb całkowitych i drukowaniu tych grup, których długość jest równa minimalnej długości grupy.Wypróbuj online
źródło
C #, 204 bajty
Nie wiem, czy użycie łańcucha jest uczciwe, biorąc pod uwagę, że wszystkie esolangi gry w golfa otrzymują takie same dane, ale poprosił o tablicę.
bez golfa:
Potrzebuję sposobu, aby uzyskać najmniejsze dopasowania dla tablicy dopasowań, większość moich bajtów jest tam marnowana, pomoc w zrozumieniu. Próbuję wejść w LINQ i lambda.
źródło
Python 2.x, 303 bajty
Najbrzydszy. Kod. Zawsze.
Dane wejściowe: tablica w formacie
r'\[(\d,)*(\d,?)?\]'
Innymi słowy, tablica liczb w pythonie
Dane wyjściowe: tablica tablic (najmniejsze grupy) w kolejności, w jakiej występują w tablicy wejściowej
Dodatkowe przypadkowe cechy (funkcje, których nie zamierzałem tworzyć):
min
namax
, zwróci tablicę największych grup.print r
, wydrukuje wszystkie grupy w kolejności.źródło
MATL, 15 bajtów
Wypróbuj online
Dane wejściowe to wektor,
[1 2 3 4]
a dane wyjściowe to macierz, w której każda kolumna jest jedną z najmniejszych grup, np .:dla trzeciego przypadku testowego.
Wyjaśnienie:
źródło
Galaretka,
221716 bajtówWypróbuj online!
źródło
JavaScript (ES6), 106
Test
źródło
h.map(length)
działa?length
powinna być funkcja z ciągiem jako argumentem, a nie metoda ciąguJavaScript (ES6), 113 bajtów
źródło
Retina,
9185807977767574 bajtówWypróbuj online!
Wyjaśnienie
Dane wejściowe to
1,1,10,10,10,100,100
.Pierwszy wiersz pasuje do grup o takich samych warunkach:
Dane wejściowe stają się:
Następujące dwa wiersze poprzedzają liczbę przecinków w wierszu:
Dane wejściowe stają się:
Następnie są sortowane według tej linii, która szuka pierwszej liczby jako indeksu:
Dane wejściowe stają się:
Następnie te dwie linie znajdują miejsce, w którym długość jest inna, i usuwają wszystko dalej:
Dane wejściowe stają się:
Następnie liczby są usuwane przez te dwie linie:
Gdzie dane wejściowe stają się:
źródło
APL, 25 znaków
Po angielsku:
źródło
⍵⊂⍨1,2≠/⍵
J , 31 bajtów
Dane wejściowe to tablica wartości. Dane wyjściowe to tablica tablic pudełkowych.
Stosowanie
Wyjaśnienie
źródło
Clojure, 65 bajtów
Zastosowania
+
jakoidentity
funkcję jak(+ 5)
to 5 :) Reszta powinna być oczywista,G
jest hash-map wykorzystywane jako funkcja i otrzymać klucz powraca odpowiednią wartość.źródło
Brachylog , 6 bajtów
Wypróbuj online!
Wejście przez zmienną wejściową i wyjście przez zmienną wyjściową.
Chociaż, w przeciwieństwie
ḅ
,ᵍ
grupy niesąsiadującymi jednakowych elementów,lᵒ
w dalszym ciągu należy znaleźć grupę o najkrótszej długości i działa, ponieważ kolejność grup na wyjściu zᵍ
ustala położenie pierwszego elementu każdej grupy, tak któryᵍhᵐ
mógłby działać jako swego rodzaju deduplikacja przez pseudometapredicate.źródło
Perl 5
-MList::Util=pairkeys,min -a
, 69 bajtówWypróbuj online!
źródło