Gần đây tôi đã đăng một câu hỏi về các trò chơi Diffy chưa được trả lời. Đó là tốt, câu hỏi thực sự khó, nhưng tôi muốn đưa ra một câu hỏi dễ dàng hơn về các trò chơi Diffy để chúng tôi có thể có được quả bóng lăn.
Làm thế nào Diffy hoạt động
Sao chép từ trò chơi Tìm Diffy
Trò chơi Diffy hoạt động như sau: Bạn bắt đầu với một danh sách các số nguyên không âm, trong ví dụ này chúng tôi sẽ sử dụng
3 4 5 8
Sau đó, bạn lấy sự khác biệt tuyệt đối giữa các số liền kề
(8) 3 4 5 8
5 1 1 3
Sau đó, bạn lặp lại. Bạn lặp lại cho đến khi bạn nhận ra bạn đã bước vào một vòng lặp. Và sau đó nói chung trò chơi bắt đầu lại từ đầu.
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
Hầu hết các trò chơi kết thúc trong một chuỗi tất cả các số không, được coi là trạng thái thua, nhưng một số ít trò chơi bị mắc kẹt trong các vòng lớn hơn.
Bài tập
Đưa ra trạng thái bắt đầu của trò chơi Diffy, xác định xem trò chơi cuối cùng có đạt đến trạng thái của tất cả các số không hay không. Bạn nên xuất giá trị Truthy hoặc Falsy cho mỗi trong hai trạng thái. Cái nào tương ứng với cái nào không quan trọng.
Mục tiêu là để giảm thiểu số lượng byte trong nguồn của bạn.
1 1 0
là định kỳ, như vậy 42 42 41
là một trạng thái.
n
là số lẻ, trò chơi sẽ không về không trừ khi tất cả các số đều bằng nhau. Nếu độ dài là lũy thừa bằng 2, nó luôn luôn về không.
n
các phần tử và tối đa m
mất tối đa các n * bit_length(m)
bước. Vì vậy, n*m
cũng là một giới hạn trên. Giới hạn trên mạnh hơn là t(n) * bit_length(m)
, nơi t(n)
có sức mạnh lớn nhất trong 2 đó là một yếu tố n
.