Comme nous l'avons vu dans cette question , des déclarations logiques complexes peuvent être exprimées en termes de connecteurs simples de démineur généralisé. Cependant, le dragueur de mines généralisé a toujours des redondances.
Afin d'éviter ces redondances, nous définissons un nouveau jeu appelé "Démineur Généralisé-1".
Démineur généralisé-1 est une version Démineur jouée sur un graphique arbitraire. Le graphique a deux types de sommet, un "indicateur" ou une "valeur". Une valeur peut être activée ou désactivée (une mine ou un raté) mais son état est inconnu du joueur. Un indicateur indique que exactement une des cellules adjacentes est allumée (une mine). Les indicateurs ne comptent pas comme des mines eux-mêmes.
Par exemple, le tableau suivant pour le dragueur de mines généralisé nous dit que les cellules A et B sont soit les deux mines, soit aucune d'entre elles n'est une mine.
(Dans le diagramme, les indicateurs sont marqués en gris tandis que les valeurs sont en blanc)
Contrairement au dragueur de mines normal où vous cliquez sur des valeurs qui sont désactivées pour révéler des indicateurs, il n'y a pas un tel mécanicien dans le dragueur de mines généralisé. Un joueur détermine simplement pour quels états du graphique peut satisfaire ses indicateurs.
Votre objectif est de faire un 2
démineur en Généralisé-1. Vous allez construire une structure dans Démineur Généralisé-1 de telle sorte qu'il y ait 8 cellules spécifiques pour lesquelles toutes les configurations de valeurs possibles ont exactement deux cellules. Cela signifie qu'il se comporte exactement comme le 2
fait un dragueur de mines traditionnel. Lorsque vous écrivez votre solution, vous ne devez pas avoir de valeurs spécifiques à l'esprit pour les cellules de valeur. (En réponse à la question de H.PWiz, il est permis que certaines cellules de valeur soient déductibles de l'état)
Notation
Vos réponses seront notées par le nombre de sommets dans le graphique final moins 8 (pour les 8 entrées), un score inférieur étant meilleur. Si deux réponses sont égales dans cette métrique, le briseur d'égalité sera le nombre d'arêtes.
la source
Réponses:
42 sommets, 56 arêtes
Chaque variable est un sommet de valeur et chaque case est un sommet indicateur avec des bords pour les variables à l'intérieur. Les entrées sont x 1 , ..., x 8 . Par exemple, voici une solution avec des mines à x 3 et x 5 , avec des mines surlignées en vert.
Les contraintes horizontales garantissent que exactement l' un des a et exactement l'un des b a une mine. Dans ces deux colonnes, r ne détient pas de mine, mais dans les six autres colonnes. (Notez que a et b ne peuvent pas avoir tous les deux une mine dans la même colonne.) Chaque entrée x est opposée au r dans sa colonne, donc exactement deux entrées ont des mines comme vous le souhaitez.
Pour les
k
entrées, cela utilise des5k+2
sommets (3k
valeur et2k+2
indicateur) et des7k
arêtes. Ici, lesk=8
entrées donnent 42 sommets et 56 arêtes.la source
50 sommets, 89 bords
Basé sur la porte logique de la réponse de H.PWiz.
Chacun
*
est activé lorsque les deux entrées respectives sont activées. Pour traiter le cas d'une seule entrée, nous utilisons les valeurs intermédiaires ,a=A&!B
etc. Connexion trois valeursa
,b
etA&B
à l'entrée d'un niveau secondaire de portes nous donne une entrée efficace deA|B
(ce qui permet d' économiser des sommets plus!(!A&!B)
):Ces
*
s sont activés si deux de leurs entrées (correspondant à quatre des entrées d'origine) sont activées, sauf dans le cas des paires déjà couvertes ci-dessus. Pendant ce temps, nous pouvons connecter les#*#
nœuds à une dernière porte. Nous avons donc les résultats suivants:Celles-ci couvrent les 28 cas de deux entrées. Il reste alors à connecter un indicateur final à ces sept valeurs. Si moins de deux entrées sont activées, aucune ne sera activée, donc l'indicateur sera éteint. Si plus de deux entrées sont activées, alors plusieurs d'entre elles seront activées et l'indicateur sera éteint.
la source
ACE
,BDF
,ADG
...(a&b)+((a|b)&(c|d))+(c&d)+((a|b|c|d)&(e|f|g|h))+(e&f)+((e|f)&(g|h))+(g&h)==1
, cela vous semble-t-il juste?197 sommets, 308 arêtes
J'ai trouvé cette réponse hier soir, mais j'ai refusé de la publier car c'était un score si élevé. Cependant, comme il bat tellement l' autre réponse , j'ai pensé que je devrais le poster.
J'utilise la configuration suivante sur les 28 paires de cellules de valeurs dans
ABCDEFGH
?
représente une cellule de valeur absenteABCDEFGH
. Ici, quand?*
est allumé ,A
etB
sont tous les deux allumés. Sinon,A
etB
pourrait être dans n'importe quelle autre configuration.Je connecte tous les 28
?*
s à une cellule d'indicateur. Cela signifie qu'une seule paire enABCDEFGH
aura deux ON . Ce qui est suffisant pour appliquer exactement deux de mes cellules de sortie sera ONla source
?
s correspond à l'un des 4 états deA B
.354 nœuds, 428 arêtes
Juste pour prouver que c'est possible. Je vais améliorer cela plus tard avec un peu de mise en cache.
(j'espère pas d'erreur de code)
J'ai essayé d'écrire un programme Mathematica ici pour vérifier la validité du programme, mais cela ne fonctionne probablement pas car il y a trop de variables.
Le résultat a été généré par un programme informatique: Essayez-le en ligne!
J'utilise une porte qui ressemble à ceci:
où
(#)
sont 1-indicateurs,(a)
..(f)
sont des valeurs.Alors,
De plus, cette porte
donne
. Utilisez ces deux types de portes que vous pouvez créer toutes les expressions.
Bien sûr, celui-ci est pour affirmer que cela
(a)
doit être vrai:la source
81 nœuds, 108 bords
En utilisant 13 nœuds et 14 arêtes, nous créons la porte Adder suivante (C (arry) = X AND Y, S (um) = X XOR Y):
Utilisez quatre additionneurs M1, M2, M3, M4 pour ajouter A + B, C + D, E + F, G + H, respectivement, avec le report résultant C1, C2, C3, C4 et la somme S1, S2, S3, S4.
Utilisez deux additionneurs M5, M6 pour ajouter S1 + S2, S3 + S4, avec le report résultant C5, C6 et la somme S5, S6.
Utilisez un Adder M7 pour ajouter S5 + S6 pour obtenir C7 et S7.
Maintenant, connectez tous les portages à un seul nœud indicateur comme suit:
et forcer S7 (le modulo 2 de somme de 8 valeurs) à 0 par ce circuit:
Je soutiens que ce circuit force exactement deux valeurs
ABCDEFGH
à être ON, car il ne peut être qu'un nombre pair (puisque S7 est 0), et il ne peut pas y avoir plus de 3 valeurs ON (car une seule de C1-C7 est ON).la source