Определения
- Подпоследовательность не может быть смежной, например,
[1, 1, 1]
является подпоследовательностью[1, 2, 1, 2, 1]
. - Равная подпоследовательность - это подпоследовательность, в которой каждый элемент равен.
- Самая длинная равная подпоследовательность может не быть уникальной, например,
[1, 1]
и[2, 2]
обе являются самыми длинными равными подпоследовательностями[2, 1, 1, 2]
.
вход
Непустой список натуральных чисел в одном из следующих форматов:
- как нативная реализация массива натуральных чисел в вашем языке
- как строка разделенных символом новой строки целых чисел в десятичной дроби
- как строка разделенных символом новой строки целых чисел в унарном
- любые другие разумные форматы
Выход
Все самые длинные равные подпоследовательности в любом порядке в одном из следующих форматов:
- как двумерный вложенный массив на вашем языке (если вход является массивом)
- как сплющенный массив с равными элементами, являющимися смежными
- любой другой разумный формат
счет
Хотя мы ищем что-то длинное, используемый код должен быть как можно более коротким с точки зрения количества байтов, поскольку это код-гольф
Testcases
Входы:
[1, 2, 3]
[1, 2, 2, 1]
[1, 2, 3, 2, 1]
[1, 2, 1, 2, 3, 4, 1]
Выходы:
[[1], [2], [3]]
[[1, 1], [2, 2]]
[[1, 1], [2, 2]]
[[1, 1, 1]]
Обратите внимание, что для выходов выше, любой заказ действителен.
Сглаженный массив также допустим, если равные элементы являются смежными.
code-golf
array-manipulation
Дрянная Монахиня
источник
источник
1 2 3
,1 1 2 2
,1 1 2 2
,1 1 1
?Ответы:
Желе , 5 байт
Попробуйте онлайн!
Как это устроено
источник
Брахилог , 7 байт
Попробуйте онлайн!
объяснение
⊇
Естественный порядок сначала генерирует самые длинные подпоследовательности, так что именно они попадают в первую группу.источник
Pyth, 5 байт
Тестирование
Объяснение:
Это неявно
S.M/QZQ
..M
является максимальной функцией, поэтому.M/QZQ
выбирает все элементы, в которых значение/QZ
, подсчитывающее количество вхождений элемента на входе, является максимальным.S
затем сортирует список так, чтобы идентичные элементы были смежными.источник
Баш, 66 байт
Кажется, это должно быть короче, но я не могу понять, как.
Попробуйте онлайн!
Спасибо Leaky Nun за 3 байта!
источник
Python 2 ,
6863 байтаПопробуйте онлайн!
источник
print
наreturn
.map
.Mathematica,
423125 байтСпасибо @GregMartin за 5 байтов и @MartinEnder за еще один байт!
объяснение
источник
Gather@#~MaximalBy~Length&
.MaximalBy[Length]@*Gather
.Stacked ,
555243 байтаПопробуйте онлайн!
Работает путем кодирования входных данных по длине прогона, сортировки по вхождениям, сохранения вхождений, для которых число вхождений является максимальным, и декодирования по длине прогона. Выводы через плоский список, что является приемлемым для задачи.
источник
На самом деле , 23 байта
Попробуйте онлайн или выполните все контрольные примеры !
Спасибо Leaky Nun за указание на однобайтовое улучшение, которое действительно должно было быть для меня очевидным
-3 байта из расслабленного выходного формата
Объяснение:
источник
Python 2, 138 байт
источник
itertools
никогда не бывает самым коротким: pMATL , 10 байт
Попробуйте онлайн!
объяснение
Похоже на мой октавский ответ Рассмотрим ввод
[10, 20, 30, 20, 10]
в качестве примера.источник
октава , 47 байт
Попробуйте онлайн!
объяснение
Второй и третий выходы
mode
(полученные как[~,b,c]=mode(...)
) соответственно дают количество повторений (b
) и массив ячеек столбца (c
) наиболее повторяющихся элементов в input (input(0)
). Затем массив ячеекc
повторяется по горизонталиb
times (repmat(c,1,b)
), преобразуется в разделенный запятыми список ({:}
) и связывается по горизонтали ([...]
), чтобы получить числовую матрицу, которая отображается (disp(...)
).источник
05AB1E ,
85 байтВыводит плоский список в порядке
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
CJam , 22 байта
Это анонимный блок (функция), который берет ввод с вершины стека и перераспределяет его с выводом. На выходе получается сплющенный массив с равными элементами, являющимися смежными.
Попробуйте онлайн!
объяснение
Рассмотрим ввод
[10 20 30 20 10 ]
в качестве примера.источник
Perl 5, 58 байт
источник
APL (Dyalog) , 22 байта
Требуется
⎕ML←3
по умолчанию во многих системах.Программа:
s/⍨(⌈/=⊢)≢¨s←⊂⍨(⍋⊃¨⊂)⎕
⎕
получить числовой (оцененный) ввод(
…)
Молчаливая функция⍋
индексов элементов по возрастанию,⊃¨
выбираемых из⊂
всего массива⊂⍨
разделение путем разрезания при его увеличенииs←
хранить как с≢¨
подсчитать каждый(
…)
Молчаливая функция,⌈/
максимум (подсчет)=
равен⊢
аргументу (подсчету)s/⍨
Фильтр с тем , чтоФункция:
{s/⍨(⌈/=⊢)≢¨s←⊂⍨⍵[⍋⍵]}
{
…}
Анонимная функция, где аргумент⍵
⍵[⍋⍵]
сортировка (освещенный индекс с индексами по возрастанию)⊂⍨
разделение путем разрезания при его увеличенииs←
хранить как с≢¨
подсчитать каждый(
…)
Молчаливая функция,⌈/
максимум (подсчет)=
равен⊢
аргументу (подсчету)s/⍨
фильтр S с этим попробовать его в Интернете!источник
PHP, 69 байт
Онлайн версия
Выходной формат
ключ = значение, значение = количество
PHP, 96 байт
Онлайн версия
Выходной формат
1D ключ = значение
2D Key = позиция во входном массиве для каждого значения
PHP, 97 байт
источник
JavaScript (ES6),
8483 байтаВозвращает отсортированный плоский массив.
Контрольные примеры
Показать фрагмент кода
источник
CJam, 24 байта
Я хотел сделать это в 05ab1e, но я сдался: P
Это блок. Вход и выход - это массивы в стеке.
Попробуйте онлайн!
Объяснение:
источник
$W=
вместо первого0=
.Clojure, 65 байт
Ungolfed:
источник
C #, 145 байт
Это должно быть возможно лучше, но я застрял.
объяснение
Возможно, совершенно другой подход был бы намного короче, поэтому задача C # все еще открыта :)
источник
Рубин , 57 байт
Попробуйте онлайн!
источник