一举两得


12

正如我们在这个问题中看到的那样,可以用广义Minesweeper的简单连接词来表示复杂的逻辑语句。但是,广义扫雷器仍有冗余。

为了避免这些冗余,我们定义了一个名为“ Generalized-1 Minesweeper”的新游戏。

Generalized-1 Minesweeper是在任意图形上播放的Minesweeper版本。该图具有两种类型的顶点,即“指示器”或“值”。值可以是开或关(地雷或哑巴),但玩家不知道其状态。指示器会告诉您,一个相邻的电池正好在(地雷)上。指标本身不算地雷。

例如,下面的通用扫雷板告诉我们,单元格A和B要么都是地雷,要么都不是地雷。

简单的游戏

(在图中,指示器以灰色标记,而值则为白色)

与普通的扫雷器不同,在常规的扫雷器中,单击关闭的值即可显示指标,而在通用扫雷器中则没有这种机制。玩家只需确定图表的哪些状态可以满足其指标。

您的目标是制作一辆2Generalized-1扫雷车。您将在Generalized-1 Minesweeper中构建一个结构,以便有8个特定的像元,其所有可能的值配置都恰好有两个像元。这意味着它的行为与2传统扫雷器的行为完全相同。在编写解决方案时,您不应该在意价值单元格的具体价值。(在回答H.PWiz的问题时,允许某些值单元可以从状态中推论得出)

计分

您的答案将由最终图形中的顶点数减去8(对于8个输入)得到评分,得分越低越好。如果此标准中有两个答案,则平局决胜局将为边数。


是否有任何边总是连接指标顶点和值顶点?
xnor

@xnor为了最大化您的分数,他们应该这样做,但是我觉得我不需要制定规则。不将值连接到指标的边不会改变图形的行为。
Ad Hoc Garf Hunter,

从分数中减去6时,这6个输入是什么?没有8个牢房吗?
xnor

@xnor对不起,应该是8。现在已修复。
Ad Hoc Garf Hunter,

您的意思是“结构...使得有8个特定的单元格,值的唯一可能的配置上恰好有两个单元格。”?唯一可能的配置应该只有两个地雷吗?
dylnan '18

Answers:


7

42个顶点,56个边

矿山网络

每个变量都是一个值顶点,每个框都是一个指示符顶点,其中的变量具有边。输入是x 1,...,x 8。例如,这是一个在x 3x 5处有地雷的解决方案,地雷以绿色突出显示。

矿山网络解决方案

水平约束确保a的正好和b的正好有一个地雷。在这两列中,r不包含地雷,但在其他六列中具有。(请注意,ab不能在同一列中都包含一个地雷。)每个输入x与其列中的r相对,因此恰好两个输入都具有所需的地雷。

对于k输入,这将使用5k+2顶点(3k值和2k+2指标)和7k边。在此,k=8输入给出42个顶点和56个边。


3

50个顶点,89个边线

基于H.PWiz答案的逻辑门。

  A&B      C&D      E&F      G&H
   |        |        |        |
b--1--a  d--1--c  f--1--e  h--1--g
|  |  |  |  |  |  |  |  |  |  |  |
1--?--1  1--?--1  1--?--1  1--?--1
|     |  |     |  |     |  |     |
A     B  C     D  E     F  G     H

*当两个相应的输入都打开时,每个打开。为了处理单个输入的情况,我们使用中间值a=A&!B等。将所有三个值连接起来ab并连接A&B到第二级门的输入,A|B可以为我们提供有效的输入(这节省了的顶点!(!A&!B)):

      *              *
      |              |
   #--1--#        #--1--#
   |  |  |        |  |  |
   1--?--1        1--?--1
  |||   |||      |||   |||
  A|B   C|D      E|F   G|H

*如果它们的两个输入(对应于原始输入的四个)打开,则这些s处于打开状态,除非上面已经涵盖了这些对。同时,我们可以将#*#节点连接到最终门。因此,我们得到以下结果:

A&B
C&D
E&F
G&H
(A|B)&(C|D)         [4 cases]
(E|F)&(G|H)         [4 cases]
(A|B|C|D)&(E|F|G|H) [16 cases]

这些涵盖了两种输入的全部28种情况。然后剩下的是将最终指标连接到这七个值。如果打开的输入少于两个,则这些输入均不会打开,因此指示灯将熄灭。如果打开了两个以上的输入,则其中一个以上将打开,并且指示灯将熄灭。


啊,我有类似的想法,但是最终创建了一个更复杂的版本。做得好!
justhalf

我不相信有43个顶点。您清楚地显示了42,所以您是说只需要再连接一个就可以了?
H.PWiz '18年

其实,如果我得出正确你所描述的图形,我觉得它允许美国喜欢ACEBDFADG...
H.PWiz

@ H.PWiz我明白你的意思了……我想也许我可以用额外的边缘来解决这个问题,以给出表达式(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,这对您来说合适吗?
尼尔,

也许,尽管对我而言,表达看起来似乎可以完全解决问题。而且我不知道您可以添加哪些边缘来实现这一点……
H.PWiz

2

197个顶点,308个边线

昨晚我想出了这个答案,但由于得分太高而拒绝发布。但是,由于它远远胜过其他答案,因此我应该发布它。

我对以下所有28对值单元格使用以下设置 ABCDEFGH

   ?*
   |
?--1--?
|  |  |
1--?--1
|     |
A     B

?代表不在中的值单元格ABCDEFGH。在这里,当?*ONAB都对。否则,A并且B可以在任何其他配置。

我将所有28 ?*秒连接到一个指示器单元。这意味着只有一对ABCDEFGH将具有两个ON。这足以强制我的两个输出单元格完全打开


1
请注意,在门中,每个4 ?s对应于的4个状态之一A B
Ad Hoc Garf Hunter '18

@HeebyJeebyMan有趣的是,我没有考虑过。我只是靠运气找到了这扇门
H.PWiz '18

1

354个节点,428个边

只是为了证明这是可能的。稍后我将通过一些缓存来改进它。

(希望没有代码错误)

我试图在此处编写Mathematica程序来检查程序的有效性,但是由于变量太多,所以它不起作用。

结果是由计算机程序生成的:在线尝试!


我使用的门看起来像这样:


               (f)
                |
                |
               (#)
              /   \
             /     \
           (d)     (e)
          /           \
         /             \
       (#) --- (c) --- (#)
     .'                  '.
   .'                      '.
(a)                          (b)

(#)1指示器在哪里,(a).. (f)是值。

然后,


c = (not a) and (not b)
d = (not a) and      b
e =      a  and (not b)
f =      a  xnor     b

还有,这扇门


(a) ----- (#) ----- (b)


b = not a

。使用这两种类型的门,您可以构建任何表达式。

当然,这是为了断言(a)必须为真:


(a) ----- (#)

1

81个节点,108个边缘

使用13个节点和14个边,我们创建以下加法器门(C(arry)= X AND Y,S(um)= X XOR Y):

X--1 --------------?
   | |
   ?-1--S--1-?-1
   | | |
   | C |
Y--1 --------------?

使用四个加法器M1,M2,M3,M4分别加A + B,C + D,E + F,G + H,结果进位C1,C2,C3,C4和总和S1,S2,S3, S4。

使用两个加法器M5,M6将S1 + S2,S3 + S4相加,得到的进位C5,C6和S5,S6之和。

使用一个加法器M7将S5 + S6加到C7和S7。

现在,将所有进位都连接到单个指示器节点,如下所示:

C1- |
C2- |
C3- |
C4-+-1
C5- |
C6- |
C7- |

并通过此电路将S7(8个值的总和的模2)设为0:

S7--1-?-1

我认为该电路强制将两个值强制ABCDEFGH设为ON,因为它只能是偶数(因为S7为0),并且不能超过3个ON值(因为C1-C7中只有一个为ON)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.