Учитывая непустой набор строк и список строк, выясните, сколько раз набор встречается в списке, т. Е. Сколько раз вы могли создать набор с элементами из списка. Каждый элемент из списка может быть использован только один раз.
Подсказка: набор представляет собой неупорядоченный список уникальных предметов.
Применяются правила ввода / вывода по умолчанию .
Внешние библиотеки не допускаются. Стандартные библиотеки компилятора / интерпретатора в порядке. Это код гольф, поэтому самое короткое решение имеет значение.
Тестовые случаи:
["apple", "banana"], ["apple", "pear", "apple", "banana", "banana"] => 2
["apple", "banana"], ["apple", "pear", "apple", "banana", "apple"] => 1
["apple", "banana", "pear"], ["apple", "banana", "kiwi", "apple"] => 0
["coconut"], [] => 0
РЕДАКТИРОВАТЬ: удалено предложение о том, что входные параметры определены в локальной области видимости. Это противоречит правилам ввода-вывода по умолчанию, связанным выше.
code-golf
set-partitions
Юбер Гжесковяк
источник
источник
Ответы:
Python, 30 байт
Попробуйте онлайн!
источник
lambda
на a,print
счетчик байтов возрастет до 37 из-за двухinput()
требуемых значений .Желе , 4 байта
Попробуйте онлайн!
Как?
источник
Желе ,
654 байтаПопробуйте онлайн!
Первый аргумент программы - это набор, а второй аргумент - список.
объяснение
-1 байт благодаря @ETHproductions
-1 байт снова благодаря @ETHproductions
источник
⁹ċ$€Ṃ
меня есть ощущение, что можно сделать короче, используя неявный правильный аргумент вместо⁹
...ċ@€Ṃ
работает, чтобы сохранить еще один байт ... (@
переворачивает аргументыċ
)Ɱ
вместо@€
(с обратными аргументами программе) сохраняет еще один байт: попробуйте онлайн!JavaScript (ES6), 56 байт
Попробуйте онлайн
источник
n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))
для 53 байтовJavaScript (ES6), 64 байта
Предполагает оба
s
иl
являются массивами объектов. Использует строгое равенство JavaScript для сравнений, например[] === []
, false.источник
Haskell ,
3734 байтаСпасибо @Laikoni за то, что сбрил три байта.
Позвоните,
(set::[a]) # (list::[a])
гдеa
происходит вывод любого типаEq
.источник
length[y|y<-l,y==x]
тебя можно использоватьsum[1|y<-l,y==x]
.sum[1|y<-l,y==x,_<-y]
, которое получается на два байта длиннее - хотя я определенно мог бы что-то там упуститьCJam , 11 байт
Попробуйте онлайн!
объяснение
источник
Mathematica, 24 байта
Чистая функция, принимающая два списка в качестве аргументов в предложенном порядке и возвращающая неотрицательное целое число.
Tally
подсчитывает, сколько вхождений каждого символа встречается во входном списке, и#/.Rule@@@
преобразует каждый элемент входного набора в соответствующее число вхождений.источник
T-SQL, 62
59байтПредыдущая версия не работала для наборов без совпадений
С s и l в качестве таблиц и столбцов, названных так же, как таблица
источник
Swift, 39 байт
объяснение:
s.map{}
проходит через каждое слово в s и будет производить массив отсчетовw in
называет сопоставленное слово для использования в следующем фильтреl.filter{}
применяет фильтр к массиву l$0==w
соответствует ли условие фильтра слову w.count
дает количество элементов l, которые удовлетворяют условию.min()
возвращает наименьшее количество в сопоставленном результатеисточник
APL (Дьялог) , 9 байт
Попробуйте онлайн!
⎕
получить оцененный ввод (список строк)⎕∘.≡
получить оцененный ввод (непустой набор строк) и создать таблицу эквивалентности+/
добавить через⌊/
минимум черезисточник
Perl 6 ,
3718 байт37
Попытайся
Expanded:
Посмотрите Наборы, Мешки, и Смеси для получения дополнительной информации.
18
Попытайся
Объяснение:
@^b.Bag
создать Bag из{@^a}
ключа значений в этот Bag (возвращает список отсчетов),.min
получить минимальное значение результирующего спискаисточник
Аксиома, 42 байта
код теста и результаты
источник
C ++,
203201 байтСпасибо @Quentin за сохранение двух байтов!
Попробуйте онлайн!
источник
L.begin()
->begin(L)
сохраняет один байт :)using T=std::vector<std::string>;
сохраняет другой! Кто знал, что современный красивый синтаксис также может помочь в игре в гольф.PHP, 74 байта
Testcases
PHP, 108 байт
Testcases
источник
Pyth, 5 байт
Принимает список первым и набор вторым. Тестирование.
Объяснение:
источник
C #, 36 байт
n
иh
естьstring[]
и выходint
.Попробуйте онлайн!
Этот ответ вдохновлен логикой @ovs и @Alberto Rivera. Спасибо!
источник
Java, 135 байт
Это мой первый вызов и ответ по коду, поэтому не уверен насчет формата. Это должна быть программа полной компиляции? Нужно ли определять параметры? Предложения приветствуются.
РЕДАКТИРОВАТЬ : обернутый код в функции. Спасибо @Steadybox
источник
05AB1E , 7 байтов
Попробуйте онлайн!
источник
Java, 114 байт
Тио скоро
объяснение
создает локальную переменную m.
отображает набор в поток.
для каждого элемента, если число вхождений элемента в списке меньше, чем m, для m устанавливается это значение.
возвращает m, которое является числом полных версий набора
источник
R 54 байта
Объяснение: создание таблицы подсчетов только тех значений в списке, которые также отображаются в подсписке.
Затем я превращаю переменную в фактор, чтобы сгенерировать нули, если значение, которое появляется в подсписке, не появляется в списке. Наконец, я беру минимум из подсчета.
источник
R
615744 байтАнонимная функция.Очевидно, вам не нужно определять функцию для этой задачи. Сохранено 13 байт благодаря счетчику.Объяснение:
sum(l%in%x))
возвращает количество раз строки вs
найдена вl
.lapply(s,function(x))
применяет это к каждой строкеs
отдельно и возвращает список сумм.min()
возвращает наименьшее из этого списка.источник
z=c();for(i in s)z[i]=sum(l%in%i);min(z)
min(sapply(s,function(x)sum(l%in%x)))
JavaScript (ES6), 59 байт
Попытайся
источник