Nhận hai từ một


12

Như chúng ta đã thấy trong câu hỏi này, các câu lệnh logic phức tạp có thể được thể hiện dưới dạng các kết nối đơn giản của Minesweeper tổng quát. Tuy nhiên, tàu quét mìn tổng quát vẫn có dự phòng.

Để tránh những sự dư thừa này, chúng tôi xác định một trò chơi mới có tên là "Generalized-1 Minesweeper".

Generalized-1 Minesweeper là phiên bản Minesweeper được chơi trên một biểu đồ tùy ý. Biểu đồ có hai loại đỉnh, "chỉ báo" hoặc "giá trị". Một giá trị có thể là bật hoặc tắt (của tôi hoặc của một người siêng năng) tuy nhiên người chơi không biết trạng thái của nó. Một chỉ báo cho biết chính xác một trong các ô liền kề đang bật (một mỏ). Các chỉ số không được tính là mỏ.

Ví dụ, bảng sau đây cho Generalines Minesweeper cho chúng ta biết rằng các ô A và B đều là mỏ hoặc cả hai đều không phải là mỏ.

Trò chơi đơn giản

(Trong các chỉ số sơ đồ được đánh dấu màu xám trong khi các giá trị là màu trắng)

Không giống như trong trình quét mìn thông thường nơi bạn nhấp vào các giá trị tắt để hiển thị các chỉ số, không có cơ chế nào như vậy trong Generalines Minesweeper. Một người chơi chỉ cần xác định các trạng thái của biểu đồ có thể đáp ứng các chỉ số của nó.

Mục tiêu của bạn là tạo ra một 2Minesweeper Generalized-1. Bạn sẽ xây dựng một cấu trúc trong Generalines-1 Minesweeper sao cho có 8 ô cụ thể mà tất cả các cấu hình có thể có của các giá trị có chính xác hai ô trên. Điều này có nghĩa là nó hoạt động chính xác như 2trong máy quét mìn truyền thống. Khi bạn viết giải pháp của mình, bạn không nên có các giá trị cụ thể cho các ô giá trị. (Trả lời câu hỏi của H.PWiz, cho phép một số ô giá trị có thể được khấu trừ từ trạng thái)

Chấm điểm

Câu trả lời của bạn sẽ được tính bằng số đỉnh trong biểu đồ cuối cùng trừ 8 (cho 8 đầu vào) với điểm thấp hơn sẽ tốt hơn. Nếu hai câu trả lời ràng buộc trong số liệu này, bộ ngắt kết nối sẽ là số cạnh.


Có cạnh nào luôn kết nối một đỉnh chỉ báo và một đỉnh giá trị không?
xnor

@xnor Để tối đa hóa điểm số của bạn họ nên, nhưng tôi không cảm thấy mình cần phải biến điều đó thành quy tắc. Các cạnh không kết nối giá trị với các chỉ báo sẽ không thay đổi hành vi của biểu đồ.
Đăng Rock Garf Hunter

Khi 6 bị trừ khỏi điểm số, 6 đầu vào là gì? Không có 8 ô à?
xnor

@xnor Xin lỗi nên được 8. Đã sửa.
Đăng Rock Garf Hunter

Bạn có ý nghĩa gì bởi "cấu trúc ... sao cho có 8 ô cụ thể mà cấu hình duy nhất có thể có của các giá trị có chính xác hai ô trên."? Là cấu hình duy nhất có thể được cho là chỉ có hai mỏ?
dyl Nam

Câu trả lời:


7

42 đỉnh, 56 cạnh

Mạng lưới mỏ

Mỗi biến là một đỉnh giá trị và mỗi hộp là một đỉnh chỉ báo có các cạnh với các biến bên trong nó. Các đầu vào là x 1 , ..., x 8 . Ví dụ: đây là một giải pháp với các mỏ ở x 3x 5 , với các mỏ được tô sáng màu xanh lá cây.

Giải pháp mạng mỏ

Những hạn chế ngang đảm bảo rằng chính xác một trong những một 's và chính xác một trong những b ' s có một mỏ. Trong hai cột đó, r không giữ mỏ, nhưng nó có trong sáu cột còn lại. (Lưu ý rằng cả ab đều không thể có mỏ trong cùng một cột.) Mỗi ​​đầu vào x đối diện với r trong cột của nó, vì vậy chính xác hai đầu vào có mỏ như mong muốn.

Đối với kđầu vào, điều này sử dụng 5k+2các đỉnh ( 3kgiá trị và 2k+2chỉ báo) và 7kcác cạnh. Ở đây, k=8đầu vào cho 42 đỉnh và 56 cạnh.


3

50 đỉnh, 89 cạnh

Dựa trên cổng logic từ câu trả lời của 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

Mỗi cái *được bật khi hai đầu vào tương ứng được bật. Để xử lý các trường hợp của một đầu vào duy nhất, chúng ta sử dụng các giá trị trung gian a=A&!B, vv Kết nối tất cả ba giá trị a, bA&B đến đầu vào của một cấp trung học của cửa cho chúng ta một đầu vào có hiệu lực A|B(điều này giúp tiết kiệm đỉnh trên !(!A&!B)):

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

Những * được bật nếu hai trong số các đầu vào của chúng (tương ứng với bốn trong số các đầu vào ban đầu) được bật, ngoại trừ trong trường hợp các cặp đã được đề cập ở trên. Trong khi đó, chúng ta có thể kết nối các #*#nút với một cổng cuối cùng. Do đó, chúng tôi có kết quả như sau:

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]

Chúng bao gồm tất cả 28 trường hợp của hai đầu vào. Sau đó, nó vẫn còn để kết nối một chỉ báo cuối cùng với bảy giá trị này. Nếu có ít hơn hai đầu vào được bật, thì không cái nào trong số này sẽ được bật, vì vậy chỉ báo sẽ tắt. Nếu có nhiều hơn hai đầu vào được bật, thì nhiều hơn một trong số này sẽ được bật và chỉ báo sẽ tắt.


Ah, tôi cũng có ý tưởng tương tự, nhưng cuối cùng lại tạo ra một phiên bản phức tạp hơn về điều này. Làm tốt lắm!
ngay

Tôi không tin rằng có 43 đỉnh. Bạn hiển thị rõ ràng 42, vì vậy bạn đang nói rằng bạn chỉ cần thêm một lần nữa để kết nối tất cả?
H.PWiz

Trên thực tế, nếu tôi đã rút ra một cách chính xác đồ thị bạn mô tả, tôi nghĩ rằng nó cho phép các quốc gia thích ACE, BDF, ADG...
H.PWiz

@ H.PWiz Tôi hiểu ý của bạn ... Tôi nghĩ có lẽ tôi có thể giải quyết điều đó bằng các cạnh phụ để đưa ra biểu thức (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, điều đó có phù hợp với bạn không?
Neil

Có lẽ, mặc dù với tôi biểu hiện đó có vẻ như nó giải quyết vấn đề hoàn toàn. Và tôi không biết bạn có thể thêm những cạnh nào để có được điều đó ...
H.PWiz

2

197 đỉnh, 308 cạnh

Tôi đã đưa ra câu trả lời này tối qua, nhưng đã từ chối đăng nó vì nó là một số điểm cao như vậy. Tuy nhiên, vì nó đánh bại câu trả lời khác rất nhiều, tôi mặc dù tôi nên đăng nó.

Tôi sử dụng thiết lập sau trên tất cả 28 cặp ô giá trị trong ABCDEFGH

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

?đại diện cho một ô giá trị không trong ABCDEFGH. Ở đây, khi ?*ON , ABcả hai đều trên. Mặt khác, AB có thể trong bất kỳ cấu hình khác.

Tôi kết nối tất cả 28 ?*giây với một ô chỉ thị. Điều này có nghĩa là chỉ một cặp trong ABCDEFGHsẽ có hai BẬT . Điều này đủ để thực thi rằng chính xác hai ô đầu ra của tôi sẽ BẬT


1
Lưu ý rằng trong cổng bạn có mỗi 4 ?giây tương ứng với một trong 4 trạng thái của A B.
Đăng Rock Garf Hunter

@HeitherJeitherMan Thú vị, tôi đã không xem xét điều đó. Tôi chỉ tìm thấy cánh cổng này một cách may mắn
H.PWiz

1

354 nút, 428 cạnh

Chỉ để chứng minh điều đó là có thể. Tôi sẽ cải thiện điều này sau với một số bộ nhớ đệm.

(hy vọng không có lỗi mã)

Tôi đã cố gắng viết một chương trình Mathicala ở đây để kiểm tra tính hợp lệ của chương trình, nhưng có lẽ nó không hoạt động vì có quá nhiều biến.

Kết quả được tạo bởi chương trình máy tính: Hãy thử trực tuyến!


Tôi sử dụng một cổng trông như thế này:


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

nơi (#)là 1 chỉ số, (a)..(f) là các giá trị.

Sau đó,


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

Ngoài ra, cổng này


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

cho


b = not a

. Sử dụng hai loại cổng bạn có thể xây dựng bất kỳ biểu thức.

Tất nhiên, điều này là để khẳng định rằng (a)phải đúng:


(a) ----- (#)

1

81 nút, 108 cạnh

Sử dụng 13 nút và 14 cạnh, chúng ta tạo cổng Adder sau (C (arry) = X AND Y, S (um) = X XOR Y):

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

Sử dụng bốn Bộ cộng M1, M2, M3, M4 để thêm A + B, C + D, E + F, G + H, tương ứng, với các kết quả mang C1, C2, C3, C4 và tổng S1, S2, S3, S4.

Sử dụng hai Adders M5, M6 để thêm S1 + S2, S3 + S4, với kết quả là mang theo C5, C6 và tổng S5, S6.

Sử dụng một Adder M7 để thêm S5 + S6 để nhận C7 và S7.

Bây giờ kết nối tất cả mang đến một nút chỉ báo như sau:

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

và buộc S7 (modulo 2 của tổng 8 giá trị) bằng 0 bởi mạch này:

S7--1 -? - 1

Tôi lập luận rằng mạch này buộc chính xác hai giá trị từ ABCDEFGHBẬT, vì nó chỉ có thể là số chẵn (vì S7 là 0) và không thể có nhiều hơn 3 giá trị BẬT (vì chỉ một trong số C1-C7 là BẬT).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.