Finden Sie bei einer nicht leeren Menge von Zeichenfolgen und einer Liste von Zeichenfolgen heraus, wie oft die Menge in der Liste vorkommt, dh wie oft Sie die Menge mit Elementen aus der Liste erstellen könnten. Jedes Element aus der Liste kann nur einmal verwendet werden.
Hinweis: Ein Set ist eine ungeordnete Liste einzigartiger Gegenstände.
Es gelten die Standard- Ein- / Ausgaberegeln .
Keine externen Bibliotheken erlaubt. Compiler / Interpreter-Standardbibliotheken sind in Ordnung. Dies ist Codegolf, daher zählt die kürzeste Lösung.
Testfälle:
["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
BEARBEITEN: Ein Satz wurde entfernt, der besagt, dass die Eingabeparameter im lokalen Bereich definiert sind. Dies widerspricht den oben verknüpften Standard-E / A-Regeln.
code-golf
set-partitions
Hubert Grzeskowiak
quelle
quelle
Antworten:
Python, 30 Bytes
Probieren Sie es online!
quelle
lambda
auf a wirdprint
die Byteanzahl aufgrund der zweiinput()
erforderlichen Werte auf 37 erhöht .Gelee , 4 Bytes
Probieren Sie es online!
Wie?
quelle
Jelly ,
654 BytesProbieren Sie es online!
Das erste Argument des Programms ist die Menge, und das zweite Argument ist die Liste.
Erläuterung
-1 Byte dank @ETHproductions
Nochmals -1 Byte dank @ETHproductions
quelle
⁹ċ$€Ṃ
Ich habe das Gefühl, dass Sie es mit dem implizit richtigen Argument anstelle von⁹
...ċ@€Ṃ
funktioniert, um ein weiteres Byte zu speichern ... (das@
kehrt die Argumente umċ
)Ɱ
anstelle von@€
(mit umgekehrten Argumenten zum Programm) spart ein weiteres Byte: Probieren Sie es online!JavaScript (ES6), 56 Byte
Probieren Sie es online aus
quelle
n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))
für 53 BytesJavaScript (ES6), 64 Byte
Nimmt beides an
s
undl
ist ein Array von Objekten. Verwendet JavaScript für Vergleiche mit strikter Gleichheit, ist also beispielsweise[] === []
falsch.quelle
Haskell ,
3734 BytesVielen Dank an @Laikoni für das Abschneiden von drei Bytes.
Rufen Sie mit
(set::[a]) # (list::[a])
wohera
kommt irgendein TypEq
.quelle
length[y|y<-l,y==x]
Ihnen können verwendensum[1|y<-l,y==x]
.sum[1|y<-l,y==x,_<-y]
, das zwei Bytes länger ist - ich könnte dort aber definitiv etwas vermissenCJam , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 24 Bytes
Reine Funktion, die zwei Listen als Argumente in der vorgeschlagenen Reihenfolge verwendet und eine nicht negative Ganzzahl zurückgibt.
Tally
zählt, wie viele Vorkommen jedes Symbols in der Eingabeliste vorkommen, und#/.Rule@@@
konvertiert jedes Element der Eingabemenge in die entsprechende Anzahl von Vorkommen.quelle
T-SQL,
62-59BytesDie vorherige Version funktionierte nicht für Sets ohne Übereinstimmungen
Mit s und l als Tabellen und Spalten mit demselben Namen wie die Tabelle
quelle
Schnell, 39 Bytes
Erläuterung:
s.map{}
Durchläuft jedes Wort in s und erzeugt eine Reihe von Zählungenw in
Benennt das zugeordnete Wort zur Verwendung im nächsten Filterl.filter{}
Wendet einen Filter auf das Array l an$0==w
ist das Filterbedingungs-Übereinstimmungswort w.count
gibt die Anzahl der Elemente von l an, die die Bedingung erfüllen.min()
Gibt die niedrigste Anzahl im zugeordneten Ergebnis zurückquelle
APL (Dyalog) , 9 Bytes
Probieren Sie es online!
⎕
ausgewertete Eingabe abrufen (Liste der Zeichenfolgen)⎕∘.≡
ausgewertete Eingabe abrufen (nicht leerer Satz von Zeichenfolgen) und Äquivalenztabelle erstellen+/
hinzufügen über⌊/
Minimum überquelle
Perl 6 ,
3718 Bytes37
Versuch es
Erweitert:
Siehe Sets, Beutel und MischungenWeitere Informationen finden .
18
Versuch es
Erläuterung:
@^b.Bag
Erstellen Sie einen Beutel aus dem Werteschlüssel{@^a}
in diesem Beutel (gibt eine Liste mit Zählwerten zurück),.min
um den Mindestwert der resultierenden Liste zu erhaltenquelle
Axiom, 42 Bytes
Testcode und Ergebnisse
quelle
C ++
203201 BytesVielen Dank an @Quentin für das Speichern von zwei Bytes!
Probieren Sie es online!
quelle
L.begin()
->begin(L)
spart ein Byte :)using T=std::vector<std::string>;
spart ein anderer! Wer moderne, hübsche Syntax kennt, kann auch beim Golfen helfen.PHP, 74 Bytes
Testfälle
PHP, 108 Bytes
Testfälle
quelle
Pyth, 5 Bytes
Nimmt die Liste zuerst und den Satz an zweiter Stelle. Testsuite.
Erläuterung:
quelle
C #, 36 Bytes
n
undh
sindstring[]
und der Ausgang ist einint
.Probieren Sie es online!
Diese Antwort ist inspiriert von @ovs und @Alberto Riveras Logik. Vielen Dank!
quelle
Java, 135 Bytes
Dies ist meine erste Code Golf Herausforderung und Antwort, also nicht sicher über das Format. Muss es ein vollständiges Kompilierungsprogramm sein? Muss ich die Parameter definieren? Vorschläge geschätzt.
EDIT : Code in eine Funktion eingebunden . Vielen Dank @Steadybox
quelle
05AB1E , 7 Bytes
Probieren Sie es online!
quelle
Java, 114 Bytes
Tio kommt bald
Erläuterung
Erzeugt die lokale Variable m.
ordnet das Set einem Stream zu.
Wenn für jedes Element die Anzahl der Vorkommen des Elements in der Liste kleiner als m ist, wird m auf diesen Wert gesetzt.
gibt m zurück, das ist die Anzahl der vollständigen Versionen der Menge
quelle
R 54 Bytes
Erläuterung: Es wird eine Tabelle mit den Zählwerten nur der Werte in der Liste erstellt, die auch in der Unterliste enthalten sind.
Ich wandle die Variable dann in einen Faktor um, um Nullen zu erzeugen, wenn ein Wert, der in der Unterliste erscheint, nicht in der Liste erscheint. Schließlich nehme ich das Minimum der Zählungen.
quelle
R
615744 BytesAnonyme Funktion.Anscheinend müssen Sie für diese Herausforderung keine Funktion definieren. 13 Bytes gespart dank count.Erläuterung:
sum(l%in%x))
Gibt zurück, wie oft ein String ins
gefunden wurdel
.lapply(s,function(x))
Wendet dies auf jede Zeichenfolges
separat an und gibt eine Liste der Summen zurück.min()
gibt den kleinsten Wert aus dieser Liste zurück.quelle
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 Byte
Versuch es
quelle