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
la source
[5..5]
? Pouvons-nous recevoir des choses comme[8..4]
?12
est un multiple des deux3
et4
empêche nos ensembles de s'exclure mutuellement ": pourquoi? Je ne vois rien d'autre dans l'énoncé du problème qui nécessite12
d'aller dans les deux sous-ensembles.[22,24,26,30]
sont tous des multiples de2
. Êtes-vous sûr qu'il ne serait pas préférable de le supprimer et de le mettre en sandbox?Réponses:
Python 2 , 167 octets
Essayez-le en ligne!
-9 octets grâce à Zacharý
-4 octets grâce à M. Xcoder
-2 octets en utilisant des listes au lieu d'ensembles
-5 octets en utilisant
a in [...]
plutôt queany([a == ...])
.-2 octets grâce à M. Xcoder
-8 octets en fusionnant les déclarations
-5 octets grâce à M. Xcoder
-7 octets grâce à M. Xcoder / Zacharý
+7 octets pour corriger le bogue
-1 octet grâce aux ovs
Remarque
Ceci est extrêmement lent pour des nombres maximums plus importants car il n'est en aucun cas optimisé; il n'a pas été dans les 2 minutes sur l'appareil de M. Xcoder pour
[22, 24, 26, 30]
.la source
Clingo , 51 octets
Démo
la source
x(3..12).
(ou dois-je mettre à jour?). BTW, pouvez-vous suggérer une bonne introduction au clingo?UNSATISFIABLE
dans un tel cas. J'ai surtout utilisé le guide Potassco .Mathematica, 105 octets
Essayez-le en ligne,
copiez et collez le code avec ctrl + v,
collez l'entrée à la fin du code,
appuyez sur Maj + Entrée pour exécuter
contribution
prend une liste comme
sorties d' entrée 0 s'il n'y en a pas
la source
Check
Haskell, 136 octets
Essayez-le en ligne!
Comment ça fonctionne
Prenez beaucoup de temps
{22,24,26,30}
.la source
Gelée,
3835343331282524232019 octets-5 octets grâce à Leaky Nun
Essayez-le en ligne!
Je pense que le troisième cas de test fonctionne, mais il est très lent.
0
est émis en l'absence de solutions.Explication (peut-être que cette explication est fausse):
la source
ṀḊŒPðḍ@þ@⁹Sḟ1ðÐḟḢL
ṀḊ
est en fait un truc vraiment cool!Julia, 91 octets
la source
[Text to display](link to website)