Lý lịch
Nếu bạn chơi golf nhiều mã, bạn có thể biết về hoạt động XOR bitwise . Cho hai số nguyên, nó cho một số nguyên khác có 1
s trong các bit có hai đầu vào khác nhau. Vì vậy, ví dụ , 1010 XOR 0011 = 1001
.
Nó hóa ra rất hữu ích trong lý thuyết trò chơi, nơi nó được gọi là "nim sum". Nếu bạn có tổng hai trò chơi (nghĩa là bạn đang thực hiện di chuyển trong một trò chơi cùng một lúc), giá trị của vị trí là tổng số giá trị của các vị trí trong mỗi trò chơi riêng lẻ.
Nhưng chúng ta có thể tiến thêm một bước này. Với phép cộng nim và một định nghĩa thích hợp về phép nhân nim , chúng ta có thể tạo thành một trường từ các số nguyên không âm. Vì vậy, thách thức là nhân rộng golf nim.
Định nghĩa
Phép nhân Nim tuân theo các quy tắc sau:
Sản phẩm nim của Fermat 2-power n = (2 ^ (2 ^ k)) với bất kỳ số nhỏ hơn là sản phẩm thông thường.
Sản phẩm nim của Fermat 2-power n với chính nó là 3n / 2.
Phép nhân nim phân phối trên phép cộng nim.
Phép nhân nim là giao hoán và kết hợp (như là phép cộng nim).
Nhận dạng nhân là 1 (và danh tính cộng là 0).
Bất kỳ số nguyên không âm nào cũng có thể được viết dưới dạng tổng nim của các lũy thừa riêng biệt của hai và bất kỳ lũy thừa nào của hai có thể được viết là tích của các số Fermat riêng biệt, vì vậy điều này là đủ để xác định phép nhân nim cho tất cả các số nguyên không âm.
Thí dụ
Đó là tất cả khá trừu tượng, vì vậy hãy làm việc qua một ví dụ. Tôi sẽ sử dụng +
để biểu thị phép cộng nim (XOR) và *
cho phép nhân nim.
6 * 13
= (4 + 2) * (8 + 4 + 1)
= (4 + 2) * ((4 * 2) + 4 + 1)
= (4 * 4 * 2) + (4 * 2 * 2) + (4 * 4) + (4 * 2) + (4 * 1) + (2 * 1)
= (6 * 2) + (4 * 3) + 6 + 8 + 4 + 2
= ((4 + 2) * 2) + 12 + 6 + 8 + 4 + 2
= (4 * 2) + (2 * 2) + 12 + 6 + 8 + 4 + 2
= 8 + 3 + 12 + 6 + 8 + 4 + 2
= 15
Các trường hợp kiểm tra bổ sung
4, 4 -> 6
4, 3 -> 12
4, 7 -> 10
2, 4 -> 8
2, 3 -> 1
1, 42 -> 42
Thử thách
Viết chương trình hoặc hàm, cho hai số nguyên không âm trong bất kỳ dạng thuận tiện nào, tính toán sản phẩm nim của chúng.
Đây là môn đánh gôn , vì vậy bài nộp ngắn nhất sẽ thắng.