Permet de prendre un ensemble de nombres entiers supérieurs à 1 et appeler X . Nous définirons S (i) comme l'ensemble de tous les membres de X divisible par i où i> 1 . Voudrait choisir parmi ces sous-ensembles un groupe d'ensembles tels que
Leur union est l'ensemble X
Aucun élément de X ne figure dans deux des ensembles.
Par exemple , nous pouvons regrouper {3..11}
comme
{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}
Certains ensembles ne peuvent pas être exprimés de cette façon. Par exemple, si nous prenons {3..12}
, 12
est un multiple de 3 et 4 empêchant nos ensembles de s'exclure mutuellement.
Certains ensembles peuvent être exprimés de plusieurs manières, par exemple {4..8}
peuvent être représentés comme
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
mais il peut également être représenté comme
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Tâche
Notre objectif est d'écrire un programme qui prendra un ensemble en entrée et produira le plus petit nombre de sous-ensembles qui le couvrent de cette façon. S'il n'y en a pas, vous devez sortir une valeur autre qu'un entier positif (par exemple 0
).
Il s'agit d'une question de code-golf donc les réponses seront notées en octets, avec moins d'octets étant mieux.
Les tests
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
[5..5]
? Pouvons-nous recevoir des choses comme [8..4]
?
12
est un multiple des deux 3
et 4
empêche nos ensembles de s'exclure mutuellement ": pourquoi? Je ne vois rien d'autre dans l'énoncé du problème qui nécessite 12
d'aller dans les deux sous-ensembles.
[22,24,26,30]
sont tous des multiples de 2
. Êtes-vous sûr qu'il ne serait pas préférable de le supprimer et de le mettre en sandbox?