Definicje
- Podsekwencja może nie być ciągła, np.
[1, 1, 1]
Jest podsekwencja[1, 2, 1, 2, 1]
. - Równa podsekwencja to podsekwencja, w której każdy element jest równy.
- Najdłuższe równe podsekwencje mogą nie być unikalne, np.
[1, 1]
I[2, 2]
oba są najdłuższymi równymi podsekwencjami[2, 1, 1, 2]
.
Wejście
Niepusta lista dodatnich liczb całkowitych w jednym z poniższych formatów:
- jako natywna implementacja tablicy dodatnich liczb całkowitych w twoim języku
- jako ciąg liczb całkowitych oddzielonych znakiem nowej linii dziesiętnej
- jako ciąg liczb całkowitych oddzielonych znakiem nowej linii w jedności
- wszelkie inne rozsądne formaty
Wynik
Wszystkie najdłuższe równe podsekwencje w dowolnej kolejności w jednym z poniższych formatów:
- jako zagnieżdżona tablica 2D w Twoim języku (jeśli dane wejściowe to tablica)
- jako spłaszczony układ z równymi elementami przylegającymi do siebie
- każdy inny rozsądny format
Punktacja
Chociaż szukamy czegoś długiego, użyty kod powinien być możliwie jak najkrótszy pod względem liczby bajtów, ponieważ jest to golf kodowy
Przypadki testowe
Wejścia:
[1, 2, 3]
[1, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
Wyjścia:
[[1], [2], [3]]
[[1, 1], [2, 2]]
[[1, 1], [2, 2]]
[[1, 1, 1]]
Pamiętaj, że dla powyższych wyników każde zamówienie jest ważne.
Poprawna jest również spłaszczona tablica, o ile równe elementy są ciągłe.
code-golf
array-manipulation
Leaky Nun
źródło
źródło
1 2 3
,1 1 2 2
,1 1 2 2
,1 1 1
?Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Brachylog , 7 bajtów
Wypróbuj online!
Wyjaśnienie
⊇
naturalny porządek generuje najpierw najdłuższe podsekwencje, więc te kończą się w pierwszej grupie.źródło
Pyth, 5 bajtów
Zestaw testowy
Wyjaśnienie:
Jest to domyślnie
S.M/QZQ
..M
jest funkcją maksymalną, więc.M/QZQ
wybiera wszystkie elementy, których wartość/QZ
, policz liczbę wystąpień elementu na wejściu, jest maksymalna.S
następnie sortuje listę, aby identyczne elementy były ciągłe.źródło
bash, 66 bajtów
Wygląda na to, że powinno być o wiele krótsze, ale nie wiem, jak to zrobić.
Wypróbuj online!
Dzięki Leaky Nun za 3 bajty!
źródło
Python 2 ,
6863 bajtówWypróbuj online!
źródło
print
zreturn
.map
.Mathematica,
423125 bajtówDzięki @GregMartin za 5 bajtów i @MartinEnder za kolejny bajt!
Wyjaśnienie
źródło
Gather@#~MaximalBy~Length&
.MaximalBy[Length]@*Gather
.Ułożone ,
555243 bajtyWypróbuj online!
Działa poprzez kodowanie długości przebiegu wejściowego, sortowanie według wystąpień, utrzymywanie wystąpień, dla których liczba wystąpień jest maksymalna, oraz dekodowanie długości przebiegu. Dane wyjściowe za pośrednictwem płaskiej listy, co jest możliwe do zaakceptowania przez wyzwanie.
źródło
Właściwie 23 bajty
Wypróbuj online lub uruchom wszystkie przypadki testowe !
Dzięki Leaky Nun za wskazanie jednobajtowego ulepszenia, które naprawdę powinno być dla mnie oczywiste
-3 bajty z zrelaksowanego formatu wyjściowego
Wyjaśnienie:
źródło
Python 2, 138 bajtów
źródło
itertools
nigdy nie jest najkrótszy: pMATL , 10 bajtów
Wypróbuj online!
Wyjaśnienie
Podobne do mojej odpowiedzi Octave. Rozważ dane wejściowe
[10, 20, 30, 20, 10]
jako przykład.źródło
Oktawa , 47 bajtów
Wypróbuj online!
Wyjaśnienie
Drugie i trzecie wyjście
mode
(uzyskane jako[~,b,c]=mode(...)
) podaje odpowiednio liczbę powtórzeń (b
) i tablicę komórek kolumny (c
) najbardziej powtarzających się elementów w input (input(0)
). Tablica komórekc
jest następnie powtarzana w poziomieb
razy (repmat(c,1,b)
), konwertowana na listę oddzieloną przecinkami ({:}
) i łączona poziomo ([...]
) w celu uzyskania matrycy numerycznej, która jest wyświetlana (disp(...)
).źródło
05AB1E ,
85 bajtówWyświetla listę płaską w kolejności
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
źródło
CJam , 22 bajty
Jest to anonimowy blok (funkcja), który pobiera dane wejściowe z góry stosu i zastępuje je danymi wyjściowymi. Dane wyjściowe to spłaszczona tablica z ciągłymi elementami.
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
[10 20 30 20 10 ]
jako przykład.źródło
Perl 5, 58 bajtów
źródło
APL (Dyalog) , 22 bajty
Wymaga
⎕ML←3
ustawienia domyślnego w wielu systemach.Program:
s/⍨(⌈/=⊢)≢¨s←⊂⍨(⍋⊃¨⊂)⎕
⎕
uzyskać dane liczbowe (ocenione)(
…)
Milcząca funkcja⍋
indeksów rosnących pozycji,⊃¨
każdy wybiera z⊂
całej tablicy⊂⍨
partycjonowanie przez cięcie przy jego wzrostachs←
przechowywać jako s≢¨
suma każdego(
…)
Milcząca funkcja⌈/
maksimum (suma)=
równa⊢
się argumentowi (wartościom)s/⍨
filtr s z tąFunkcjonować:
{s/⍨(⌈/=⊢)≢¨s←⊂⍨⍵[⍋⍵]}
{
…}
Anonimowa funkcja, w której występuje argument⍵
⍵[⍋⍵]
sort (indeks z indeksami rosnących pozycji)⊂⍨
partycjonowanie przez cięcie przy jego wzrostachs←
przechowywać jako s≢¨
suma każdego(
…)
Milcząca funkcja⌈/
maksimum (suma)=
równa⊢
się argumentowi (wartościom)s/⍨
Filtr s z tym Wypróbuj online!źródło
PHP, 69 bajtów
Wersja online
Format wyjściowy
klucz = wartość, wartość = liczba
PHP, 96 bajtów
Wersja online
Format wyjściowy
Klucz 1D = wartość
Klawisz 2D = pozycja w tablicy wejściowej dla każdej wartości
PHP, 97 bajtów
źródło
JavaScript (ES6),
8483 bajtówZwraca posortowaną spłaszczoną tablicę.
Przypadki testowe
Pokaż fragment kodu
źródło
CJam, 24 bajty
Chciałem to zrobić w 05ab1e, ale zrezygnowałem: P
To jest blok. Dane wejściowe i wyjściowe są tablicami na stosie.
Wypróbuj online!
Wyjaśnienie:
źródło
$W=
zamiast pierwszego0=
.Clojure, 65 bajtów
Nie golfowany:
źródło
C #, 145 bajtów
To musi być również możliwe lepiej, jednak trochę utknąłem.
Wyjaśnienie
Prawdopodobnie zupełnie inne podejście byłoby znacznie krótsze, więc wyzwanie C # jest nadal otwarte :)
źródło
Rubinowy , 57 bajtów
Wypróbuj online!
źródło