Biorąc pod uwagę niepusty zestaw ciągów i listę ciągów, dowiedz się, ile razy zestaw występuje na liście, tj. Ile razy możesz utworzyć zestaw z elementami z listy. Każdy element z listy może być użyty tylko raz.
Wskazówka: zestaw to nieuporządkowana lista unikalnych przedmiotów.
Obowiązują domyślne reguły wejścia / wyjścia .
Niedozwolone są biblioteki zewnętrzne. Standardowe biblioteki kompilatora / interpretera są w porządku. To jest golf golfowy, więc liczy się najkrótsze rozwiązanie.
Przypadki testowe:
["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
EDYCJA: usunięto zdanie stwierdzające, że parametry wejściowe są zdefiniowane w zasięgu lokalnym. Jest to sprzeczne z domyślnymi regułami IO powiązanymi powyżej.
code-golf
set-partitions
Hubert Grzeskowiak
źródło
źródło
Odpowiedzi:
Python, 30 bajtów
Wypróbuj online!
źródło
lambda
aprint
powoduje zwiększenie liczby bajtów do 37 ze względu nainput()
wymagane dwa s.Galaretka , 4 bajty
Wypróbuj online!
W jaki sposób?
źródło
Galaretka ,
654 bajtówWypróbuj online!
Pierwszym argumentem programu jest zestaw, a drugim argumentem jest lista.
Wyjaśnienie
-1 bajt dzięki @ETHproductions
-1 bajt ponownie dzięki @ETHproductions
źródło
⁹ċ$€Ṃ
Mam wrażenie, że można go skrócić, używając niejawnego właściwego argumentu zamiast⁹
...ċ@€Ṃ
działa, aby zapisać kolejny bajt ... (@
odwraca argumentyċ
)Ɱ
zamiast@€
(z odwróconymi argumentami do programu) zapisuje kolejny bajt: Wypróbuj online!JavaScript (ES6), 56 bajtów
Wypróbuj online
źródło
n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))
dla 53 bajtówJavaScript (ES6), 64 bajty
Zakłada oba
s
il
są tablicami obiektów. Używa ścisłej równości JavaScript do porównań, więc na przykład[] === []
jest fałszem.źródło
Haskell ,
3734 bajtówDzięki @Laikoni za golenie trzech bajtów.
Zadzwoń,
(set::[a]) # (list::[a])
skąda
pochodzi dowolny typEq
.źródło
length[y|y<-l,y==x]
ciebie możesz użyćsum[1|y<-l,y==x]
.sum[1|y<-l,y==x,_<-y]
, co wydłuża się o dwa bajty dłużej - ale na pewno coś tam brakowałoCJam , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 24 bajty
Czysta funkcja przyjmująca dwie listy jako argumenty w sugerowanej kolejności i zwracająca nieujemną liczbę całkowitą.
Tally
zlicza liczbę wystąpień każdego symbolu na liście wejściowej i#/.Rule@@@
konwertuje każdy element zestawu wejściowego na odpowiednią liczbę wystąpień.źródło
T-SQL, 62
59bajtówPoprzednia wersja nie działała dla zestawów bez dopasowań
Zs i l jako tabele i kolumny o takich samych nazwach jak tabela
źródło
Szybki, 39 bajtów
wyjaśnienie:
s.map{}
przechodzi przez każde słowo ws i tworzy tablicę zliczeńw in
nazywa odwzorowane słowo do użycia w następnym filtrzel.filter{}
stosuje filtr do tablicy L.$0==w
to słowo filtrujące pasujące do słowa w.count
podaje liczbę elementów l spełniających warunek.min()
zwraca najniższą liczbę w zmapowanym wynikuźródło
APL (Dyalog) , 9 bajtów
Wypróbuj online!
⎕
uzyskać sprawdzone dane wejściowe (lista ciągów)⎕∘.≡
uzyskać sprawdzone dane wejściowe (niepusty zestaw ciągów) i utworzyć tabelę równoważności+/
dodaj w poprzek⌊/
minimum w poprzekźródło
Perl 6 ,
3718 bajtów37
Spróbuj
Rozszerzony:
Aby uzyskać więcej informacji, zobacz Zestawy, torby i miksy .
18
Spróbuj
Wyjaśnienie:
@^b.Bag
utwórz torbę z{@^a}
klucza wartości do tej torby (zwraca listę zliczeń),.min
uzyskaj minimalną wartość wynikowej listyźródło
Aksjomat, 42 bajty
kod testowy i wyniki
źródło
C ++,
203201 bajtówDzięki @Quentin za zapisanie dwóch bajtów!
Wypróbuj online!
źródło
L.begin()
->begin(L)
zapisuje jeden bajt :)using T=std::vector<std::string>;
oszczędza inny! Kto znał nowoczesną ładną składnię, może również pomóc w grze w golfa.PHP, 74 bajty
Przypadki testowe
PHP, 108 bajtów
Przypadki testowe
źródło
Pyth, 5 bajtów
Najpierw ustawia listę, a drugą ustawia. Zestaw testowy.
Wyjaśnienie:
źródło
C #, 36 bajtów
n
ih
są,string[]
a wynikiem jest anint
.Wypróbuj online!
Ta odpowiedź jest inspirowana logiką @ovs i @Alberto Rivera. Dziękuję Ci!
źródło
Java, 135 bajtów
To jest moje pierwsze wyzwanie i odpowiedź na golfa, więc nie jestem pewien co do formatu. Czy to musi być pełny program kompilujący? Czy muszę zdefiniować parametry? Sugestie docenione.
EDYCJA : zawinięty kod w funkcji. Dzięki @Steadybox
źródło
05AB1E , 7 bajtów
Wypróbuj online!
źródło
Java, 114 bajtów
Tio już wkrótce
Wyjaśnienie
tworzy zmienną lokalną m.
mapuje zestaw do strumienia.
dla każdego elementu, jeśli liczba wystąpień elementu na liście jest mniejsza niż m, m jest ustawiane na tę wartość.
zwraca m, czyli liczbę pełnych wersji zestawu
źródło
R 54 bajtów
Objaśnienie: tworzenie tabeli liczeń tylko wartości z listy, które również pojawiają się na liście podrzędnej.
Następnie przekształcam zmienną w czynnik w celu generowania zer, jeśli wartość pojawiająca się na liście podrzędnej nie pojawia się na liście. Wreszcie, biorę minimum zliczeń.
źródło
R,
615744 bajtówFunkcja anonimowa.Najwyraźniej nie musisz definiować funkcji dla tego wyzwania. Oszczędność 13 bajtów dzięki liczeniu.Wyjaśnienie:
sum(l%in%x))
zwraca liczbę przypadków, w którychs
znaleziono ciąg znakówl
.lapply(s,function(x))
stosuje to do każdego łańcuchas
osobno i zwraca listę sum.min()
zwraca najmniejszą z tej listy.źródło
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 bajtów
Spróbuj
źródło