Vamos a echar un conjunto de números enteros mayores que 1 y lo llaman X . Definiremos S (i) como el conjunto de todos los miembros de X divisible por i donde i> 1 . Me gustaría elegir de estos subconjuntos un grupo de conjuntos de manera que
Su unión es el conjunto X
Ningún elemento de X está en dos de los conjuntos.
Por ejemplo, podemos reagruparnos {3..11}
como
{3,4,5,6,7,8,9,10,11}
S(3): {3, 6, 9, }
S(4): { 4, 8, }
S(5): { 5, 10, }
S(7): { 7, }
S(11):{ 11}
Algunos conjuntos no se pueden expresar de esta manera. Por ejemplo, si tomamos {3..12}
, 12
es un múltiplo de 3 y 4 que impide que nuestros conjuntos sean mutuamente excluyentes.
Algunos conjuntos se pueden expresar de múltiples maneras, por ejemplo, {4..8}
se pueden representar como
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
pero también se puede representar como
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Tarea
Nuestro objetivo es escribir un programa que tome un conjunto como entrada y salida con el menor número de subconjuntos que lo cubren de esta manera. Si no hay ninguno, debe generar algún valor que no sea un entero positivo (por ejemplo 0
).
Esta es una pregunta de código de golf , por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.
Pruebas
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
fuente
[5..5]
? ¿Podemos recibir cosas como[8..4]
?12
es un múltiplo de ambos3
y4
evita que nuestros sets sean mutuamente excluyentes ": ¿por qué? No veo nada más en la declaración del problema que requiera12
entrar en ambos subconjuntos.[22,24,26,30]
son todas múltiplos de2
. ¿Estás seguro de que no sería mejor eliminar esto y ponerlo a prueba?Respuestas:
Python 2 , 167 bytes
Pruébalo en línea!
-9 bytes gracias a Zacharý
-4 bytes gracias al Sr. Xcoder
-2 bytes utilizando listas en lugar de conjuntos
-5 bytes utilizando en
a in [...]
lugar deany([a == ...])
.-2 bytes gracias al Sr. Xcoder
-8 bytes fusionando declaraciones
-5 bytes gracias al Sr. Xcoder
-7 bytes gracias al Sr. Xcoder / Zacharý
+7 bytes para corregir el error
-1 byte gracias a los ovs
Nota
Esto es extremadamente lento para números máximos mayores porque de ninguna manera está optimizado; no lo hizo dentro de 2 minutos en el dispositivo del Sr. Xcoder para
[22, 24, 26, 30]
.fuente
Clingo , 51 bytes
Manifestación
fuente
x(3..12).
(¿o necesito actualizar?). Por cierto, ¿puedes sugerir una buena introducción al clingo?UNSATISFIABLE
en tal caso. Principalmente utilicé la guía Potassco .Mathematica, 105 bytes
Pruébelo en línea,
copie y pegue el código con Ctrl + V,
pegue la entrada al final del código,
presione Mayús + Intro para ejecutar
entrada
toma una lista como
salidas de entrada 0 si no hay ninguna
fuente
Check
Haskell, 136 bytes
Pruébalo en línea!
Cómo funciona
Tómese mucho tiempo para
{22,24,26,30}
.fuente
Gelatina,
3835343331282524232019 bytes-5 bytes gracias a Leaky Nun
Pruébalo en línea!
Creo que el tercer caso de prueba funciona, pero es muy lento.
0
se emite cuando no hay soluciones.Explicación (podría haber entendido mal esta explicación):
fuente
ṀḊŒPðḍ@þ@⁹Sḟ1ðÐḟḢL
ṀḊ
realidad es un truco genial!Julia, 91 bytes
fuente
[Text to display](link to website)