Dado un conjunto de cadenas no vacío y una lista de cadenas, averigüe cuántas veces se produce el conjunto en la lista, es decir, cuántas veces podría crear el conjunto con elementos de la lista. Cada elemento de la lista solo se puede usar una vez.
Sugerencia: un conjunto es una lista desordenada de elementos únicos.
Se aplican las reglas predeterminadas de entrada / salida .
No se permiten bibliotecas externas. Las bibliotecas estándar del compilador / intérprete están bien. Este es el código de golf, por lo que la solución más corta cuenta.
Casos de prueba:
["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
EDITAR: eliminó una oración que indica que los parámetros de entrada están definidos en el ámbito local. Esto contradice las reglas de IO predeterminadas vinculadas anteriormente.
code-golf
set-partitions
Hubert Grzeskowiak
fuente
fuente
Respuestas:
Python, 30 bytes
Pruébalo en línea!
fuente
lambda
a a,print
el recuento de bytes es de hasta 37 debido a los dosinput()
s requeridos.Jalea , 4 bytes
Pruébalo en línea!
¿Cómo?
fuente
Gelatina ,
654 bytesPruébalo en línea!
El primer argumento del programa es el conjunto, y el segundo argumento es la lista.
Explicación
-1 byte gracias a @ETHproductions
-1 byte nuevamente gracias a @ETHproductions
fuente
⁹ċ$€Ṃ
tengo la sensación de que puede⁹
ċ@€Ṃ
funciona para salvar otro byte ... (@
revierte los argumentosċ
)Ɱ
en lugar de@€
(con argumentos invertidos para el programa) guarda otro byte: ¡ Pruébelo en línea!JavaScript (ES6), 56 bytes
Pruébalo en línea
fuente
n=>h=>Math.min(...n.map(c=>h.filter($=>$==c).length))
para 53 bytesJavaScript (ES6), 64 bytes
Asume ambos
s
yl
son matrices de objetos. Utiliza la igualdad estricta de JavaScript para las comparaciones, por lo que, por ejemplo,[] === []
es falso.fuente
Haskell ,
3734 bytesGracias a @Laikoni por reducir tres bytes.
Llame con
(set::[a]) # (list::[a])
dondea
se deriva cualquier tipoEq
.fuente
length[y|y<-l,y==x]
que pueda usarsum[1|y<-l,y==x]
.sum[1|y<-l,y==x,_<-y]
, que llega a dos bytes más, sin embargo, definitivamente podría estar perdiendo algo allíCJam , 11 bytes
Pruébalo en línea!
Explicación
fuente
Mathematica, 24 bytes
Función pura que toma dos listas como argumentos en el orden sugerido y devuelve un entero no negativo.
Tally
cuenta cuántas ocurrencias de cada símbolo ocurren en la lista de entrada y#/.Rule@@@
convierte cada elemento del conjunto de entrada en el número correspondiente de ocurrencias.fuente
T-SQL, 62
59bytesLa versión anterior no funcionaba para sets sin coincidencias
Con s y l como tablas y columnas con el mismo nombre que la tabla
fuente
Swift, 39 bytes
explicación:
s.map{}
pasa por cada palabra en sy producirá una serie de recuentosw in
nombra la palabra asignada para usar en el siguiente filtrol.filter{}
aplica un filtro a la matriz l$0==w
es la condición de filtro que coincide con la palabra w.count
da el número de elementos de l que cumplen la condición.min()
devuelve el recuento más bajo en el resultado asignadofuente
APL (Dyalog) , 9 bytes
Pruébalo en línea!
⎕
obtener entrada evaluada (lista de cadenas)⎕∘.≡
obtener una entrada evaluada (conjunto de cadenas no vacío) y crear una tabla de equivalencia+/
agregar a través⌊/
mínimo a travésfuente
Perl 6 ,
3718 bytes37
Intentalo
Expandido:
Ver Conjuntos, Bolsas y Mezclas para más información.
18 años
Intentalo
Explicación:
@^b.Bag
cree una bolsa a partir de la{@^a}
clave de valores en esa bolsa (devuelve una lista de recuentos).min
obtenga el valor mínimo de la lista resultantefuente
Axioma, 42 bytes
código de prueba y resultados
fuente
C ++,
203201 bytes¡Gracias a @Quentin por guardar dos bytes!
Pruébalo en línea!
fuente
L.begin()
->begin(L)
guarda un byte :)using T=std::vector<std::string>;
guarda otro! Quién sabía que la sintaxis bonita moderna también podría ayudar al golf.PHP, 74 bytes
Casos de prueba
PHP, 108 bytes
Casos de prueba
fuente
Pyth, 5 bytes
Toma la lista primero y el segundo set. Banco de pruebas.
Explicación:
fuente
C #, 36 bytes
n
yh
sonstring[]
y la salida es unint
.Pruébalo en línea!
Esta respuesta está inspirada en la lógica de @ovs y @Alberto Rivera. ¡Gracias!
fuente
Java, 135 bytes
Este es mi primer código de desafío y respuesta de golf, así que no estoy seguro sobre el formato. ¿Tiene que ser un programa completo de compilación? ¿Necesito definir los parámetros? Sugerencias apreciadas.
EDITAR : código envuelto en una función. Gracias @Steadybox
fuente
05AB1E , 7 bytes
Pruébalo en línea!
fuente
Java, 114 bytes
Tio próximamente
Explicación
crea la variable local m.
asigna el conjunto a una secuencia.
para cada elemento, si el número de ocurrencias del elemento en la lista es menor que m, m se establece en ese valor.
devuelve m, que es el número de versiones completas del conjunto
fuente
R 54 bytes
Explicación: crear una tabla de los recuentos de solo los valores de la lista que también aparecen en la sublista.
Luego convierto la variable en un factor para generar ceros si un valor que aparece en la sublista no aparece en la lista. Finalmente, tomo el mínimo de los recuentos.
fuente
R,
615744 bytesFunción anónima.Aparentemente no tienes que definir una función para este desafío. Guardado 13 bytes gracias a contar.Explicación:
sum(l%in%x))
devuelve el número de veces que se encuentra una cadenas
enl
.lapply(s,function(x))
aplica eso a cada cadena ens
separado y devuelve una lista de sumas.min()
devuelve el más pequeño de esa lista.fuente
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 bytes
Intentalo
fuente