Lý lịch
Trong trò chơi của Nim , người chơi luân phiên tháo "đá" từ "đống": trên mỗi lượt, người chơi phải loại bỏ từ một đến tất cả các đá từ một đơn cọc. Mục tiêu của Nim là lấy viên đá cuối cùng hoặc, trong biến thể sai lầm, buộc đối thủ của bạn phải làm như vậy - tuy nhiên, hóa ra các chiến lược gần như giống hệt nhau.
Nim làm một trò chơi thanh vui vẻ. Bạn có thể sử dụng que diêm hoặc tiền xu cho "đá" và "cọc" thường được sắp xếp thành một hàng. Dưới đây là một thiết lập cổ điển với các cọc 1, 3, 5 và 7:
Nếu bạn chưa từng chơi Nim trước đây, bạn có thể thử sức mình trước khi thử thách này. Đây là một phiên bản gọi là "Ngọc trai trước khi lợn" .
Chiến lược
Chiến lược tối ưu trong Nim đủ phức tạp để hầu hết giáo dân thường thua một chuyên gia, nhưng đơn giản để mô tả với số học nhị phân .
Tuy nhiên, thực hiện các thao tác XOR nhị phân tinh thần rất khó khăn, vì vậy may mắn thay, có một cách tương đương để hình dung chiến lược chính xác, dễ thực hiện hơn trong thời gian thực, ngay cả khi say rượu.
Chỉ có ba bước:
- Nhóm các "viên đá" trong mỗi dòng thành các nhóm nhỏ có kích thước là 2, bắt đầu với kích thước lớn nhất có thể: 8, 4, 2 và 1 là đủ cho hầu hết các trò chơi.
- Cố gắng ghép từng nhóm với một cặp trong một dòng khác, để mỗi nhóm có một cặp.
- Nếu điều này là không thể, hãy loại bỏ các "viên đá" không ghép đôi khỏi một dòng duy nhất (điều này sẽ luôn luôn có thể - xem liên kết Wikipedia để biết lý do) để bước 2. trở nên khả thi.
Hoặc, nói một cách khác: "Loại bỏ một số viên đá khỏi một cọc sao cho nếu sau đó bạn nhóm các cọc thành sức mạnh của 2 thì tất cả các nhóm có thể được ghép với một nhóm trong một số cọc khác." Với lời cảnh báo rằng bạn không thể chia sức mạnh lớn hơn của 2 thành các nhóm nhỏ hơn - ví dụ: bạn không thể nhóm một dòng có 8 viên đá thành hai nhóm 4.
Ví dụ: đây là cách bạn hình dung bảng ở trên:
Bảng này hoàn toàn cân bằng, vì vậy bạn muốn đối thủ của mình di chuyển trước.
Các thách thức
Đưa ra một danh sách các số nguyên dương biểu thị kích thước của "cọc" Nim, trả về một trực quan văn bản đơn giản của bảng Nim như một chuyên gia nhìn thấy.
Những gì cấu thành một trực quan hợp lệ được giải thích tốt nhất bằng ví dụ, nhưng bạn phải:
- Gán một ký tự riêng cho từng "nhóm sức mạnh 2" và cặp của nó (các nhóm con chưa ghép đôi không đủ điều kiện) và sử dụng ký tự đó để biểu thị các "viên đá" trong cả hai nhóm và cặp.
- Đại diện cho bất kỳ "viên đá" chưa ghép nối nào (nghĩa là những viên đá mà một chuyên gia sẽ loại bỏ khi chơi bình thường - không phải là sai - Nim) bằng cách sử dụng dấu gạch nối :
-
.
Sẽ có nhiều cách để đạt được một hình dung hợp lệ, và tất cả đều hợp lệ. Chúng ta hãy làm việc thông qua một số trường hợp thử nghiệm:
Các trường hợp thử nghiệm
Đầu vào: 1, 3, 5, 7
Đầu ra có thể 1:
A
BBA
CCCCD
CCCCBBD
Bạn có thể tùy ý bao gồm khoảng trắng giữa các ký tự, cũng như các dòng trống giữa các hàng:
Đầu ra có thể 2:
A
B B A
C C C C D
C C C C B B D
Đầu vào: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Thứ tự và sự lựa chọn của các nhân vật có thể là bất cứ điều gì bạn thích:
Đầu ra có thể 1:
G
E E
E E G
C C C C
C C C C F
B B B B D D
B B B B D D F
H H I - - - - -
A A A A A A A A I
A A A A A A A A H H
Các ký hiệu Unicode cũng ok:
Đầu ra có thể 2:
◎
◈ ◈
◈ ◈ ◎
△ △ △ △
△ △ △ △ ◉
◐ ◐ ◐ ◐ ◀ ◀
◐ ◐ ◐ ◐ ◀ ◀ ◉
▽ ▽ ◒ - - - - -
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ◒
▥ ▥ ▥ ▥ ▥ ▥ ▥ ▥ ▽ ▽
Đầu vào: 7
Từ các quy tắc, theo đó bất kỳ "cọc đơn" nào cũng phải được loại bỏ hoàn toàn.
Đầu ra có thể 1:
-------
Đầu ra có thể 2:
- - - - - - -
Đầu vào: 5, 5
Đầu ra có thể:
A A A A B
A A A A B
Quy tắc bổ sung
- Đây là mã golf với các quy tắc tiêu chuẩn. Mã ngắn nhất sẽ thắng.
- Đầu vào là linh hoạt và có thể được thực hiện dưới bất kỳ hình thức danh sách nào thuận tiện cho bạn.
- Đầu ra cũng linh hoạt, như các ví dụ trên minh họa. Các biến thể hợp lý nhất sẽ được cho phép. Hỏi nếu bạn không chắc chắn về điều gì đó.
["H","EE","EEH","CCCC","CCCCI","DDDDFF","DDDDFFI","AAAAAAAA","AAAAAAAA-","----------"]
AAAABBBB
thực sự không hợp lệ, và ABB
không phải - nhưng nó làm cho đầu ra ít đọc hơn nên tôi nghĩ chỉ cần giảm trong một dòng là một quy tắc rõ ràng là tốt nhất.