Вступление
Давайте рассмотрим следующий массив:
[1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1]
Группа состоит из тех же цифр рядом друг с другом. В приведенном выше массиве есть 5 разных групп:
[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
Наименьшая группа из них [2, 2]
, поэтому мы выводим [2, 2]
.
Давайте возьмем другой пример:
[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
Вы можете видеть, что есть несколько групп с одинаковой длиной. Самые маленькие группы:
[3, 3], [4, 4], [4, 4] and [5, 5].
Поэтому мы просто выводим данные [3, 3], [4, 4], [4, 4], [5, 5]
в любом разумном формате. Вы можете вывести их в любом порядке.
Задание
Учитывая массив, состоящий только из натуральных чисел, выведите наименьшую группу (ы) из массива. Можно предположить, что массив будет содержать как минимум 1 целое число.
Контрольные примеры
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]
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
11101010100100
не кажется правильным для ввода: с.Ответы:
Pyth,
141211Тестирование
2 байта благодаря Якубе! И 1 байт благодаря isaacg!
К сожалению, декодирование по длине прогона не совсем делает то, что мы хотим, но оно будет работать с небольшим обходным путем, но это делает его немного длиннее, чем ручная реализация:
Благодарим Якуба за то, что он это выяснил.
источник
mr]d9.mhbrQ8
.bmYN
==mM_M
Mathematica, 24 байта
Это состав из двух функций, которые могут быть применены к списку.
Split
берет все группы последовательных чисел иMinimalBy[Length]
выбирает их с минимальной длиной.источник
Haskell, 38 байт
Пример использования:
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]]
.Создайте группы из одинаковых элементов и найдите их с минимальной длиной.
источник
Data.Lists
?argmins
например, из Data.List.Extras.Agrmax .Python 2, 120 байт
Принимает ввод как строку разделенных пробелом целых чисел с завершающим пробелом и выводит список списков строк. Стратегия состоит в том, чтобы найти группы с помощью регулярного выражения
(\d+ )\1*
(которое соответствует одному или нескольким целым числам, разделенным пробелами, с завершающим пробелом), затем разбить их по пробелам на списки целых чисел и распечатать те группы, длина которых равна минимальной длине группы.Попробуйте онлайн
источник
C #, 204 байта
Я не знаю, справедливо ли использование строки, учитывая, что все эсоланги в гольфе получают свои данные одинаково, но он запросил массив.
ungolfed:
Мне нужен способ получить наименьшие совпадения для массива совпадений, большая часть моих байтов потрачена впустую, помощь оценена. Я пытаюсь проникнуть в LINQ и лямбду.
источник
Python 2.x, 303 байта
Уродливый. Код. Когда-либо.
Ввод: массив в формате
r'\[(\d,)*(\d,?)?\]'
Другими словами, массив чисел python
Выходные данные: массив массивов (наименьших групп) в порядке их появления во входном массиве.
Дополнительные совпадения (функции, которые я не собирался делать):
min
наmax
это будет возвращать массив самых больших групп.print r
, он распечатает все группы по порядку.источник
MATL, 15 байт
Попробуйте онлайн
Входные данные - это вектор,
[1 2 3 4]
а выходные данные - это матрицы, где каждый столбец является одной из наименьших групп, например:для третьего случая испытания.
Объяснение:
источник
Желе,
221716 байтПопробуйте онлайн!
источник
JavaScript (ES6), 106
Тестовое задание
источник
h.map(length)
работает?length
должна быть функция со строкой в качестве аргумента, а не метод строкиJavaScript (ES6), 113 байт
источник
Retina,
9185807977767574 байтаПопробуйте онлайн!
объяснение
Вход есть
1,1,10,10,10,100,100
.Первая строка соответствует группам с одинаковыми терминами:
Вход становится:
В следующих двух строках число запятых добавляется к строке:
Вход становится:
Затем они сортируются по этой строке, которая ищет первое число в качестве индекса:
Вход становится:
Затем эти две строки находят место, где длина отличается, и удаляют все дальше:
Вход становится:
Затем числа удаляются этими двумя строками:
Где ввод становится:
источник
APL, 25 символов
По-английски:
источник
⍵⊂⍨1,2≠/⍵
J , 31 байт
Ввод представляет собой массив значений. Выходные данные - это массив штучных массивов.
использование
объяснение
источник
Clojure, 65 байт
Используется
+
какidentity
функция, как(+ 5)
и 5 :) Остальное должно быть очевидным,G
это хеш-карта, используемая в качестве функции, и при наличии ключа она возвращает соответствующее значение.источник
Брахилог , 6 байт
Попробуйте онлайн!
Ввод через входную переменную и вывод через выходную переменную.
Хотя, в отличие
ḅ
,ᵍ
группы непоследовательных равных элементов, тоlᵒ
по - прежнему необходимо найти группу с самой короткой длиной, и она работает , потому что порядок групп в выводеᵍ
определяются положением первого элемента каждой группы, так этоᵍhᵐ
может функционировать как своего рода дедупликация с помощью псевдометапредиката.источник
Perl 5
-MList::Util=pairkeys,min -a
, 69 байтПопробуйте онлайн!
источник