图片
Gần đây tôi đang chơi một trò chơi đố chữ kỹ thuật số có tên "Tranh logic". Nhìn bề ngoài, nó chỉ vẽ một lưới dựa trên các hàng và dãy số, nhưng thực ra nó ẩn chứa một hệ thống ràng buộc số hiệu quả. Là một người chơi chiến lược cốt lõi, tôi trực tiếp phân tích logic cơ bản của nó và nhận thấy rằng chỉ cần tôi nắm vững một số quy tắc số, tốc độ giải câu đố có thể tăng gấp đôi.
Trước tiên hãy nói về cấu trúc số cốt lõi: các số trong mỗi hàng và cột biểu thị độ dài của lưới đen liên tục và thứ tự từ trái sang phải hoặc từ trên xuống dưới. Giả sử rằng chiều rộng lưới là N và các số trong một hàng là [a1, a2, ..., ak] thì tổng số ô bị chiếm bởi các số này là a1+a2+...+ak và cần có ít nhất 1 khoảng trống giữa các số (tổng cộng là k-1), do đó tổng chiều dài cần thiết = sum + (k-1). Nếu giá trị này lớn hơn N, điều đó có nghĩa là tổ hợp số hiện tại không thể được thiết lập và bị loại bỏ trực tiếp. Ngược lại, nếu tổng + (k-1) = N thì chỉ có thể có đúng 1 khoảng trống giữa các số và tất cả các lưới buộc phải xác định, đó là trạng thái "điền đầy".
Bước đầu tiên của chiến lược tối ưu: trước tiên hãy quét những hàng hoặc cột có tổng + (k-1) = N, bạn có thể điền trực tiếp vào tất cả các lưới tương ứng và đặt các khoảng trống. Điều này có thể nhanh chóng tạo ra nhiều ô được xác định và cung cấp các điểm neo cho khả năng suy luận chéo.
Bước thứ hai là sử dụng "phương pháp chồng chéo". Khi giá trị của một số nào đó lớn, ví dụ độ dài dòng là 10 và số là [7] thì vị trí bắt đầu có thể có của 7 lưới liên tiếp là từ 1 đến 4 (vì điểm cuối không thể vượt quá 10). Trong số 7 lưới này, các vị trí từ 4 đến 7 (nghĩa là điểm cuối của vị trí bắt đầu 1 và điểm bắt đầu của vị trí bắt đầu 4 trùng nhau) sẽ được vẽ bất kể thế nào - phương pháp tính toán là: phạm vi vị trí bắt đầu = [1, N - a + 1], khoảng chồng lấp = [max(1, mức tối thiểu bắt đầu + a - 1), min(N, mức tối đa bắt đầu + a - 1)]. Bản chất là vẽ một phạm vi và tìm giao điểm. Vẽ loại lưới này phải sơn trước cũng tương đương với việc khóa các manh mối then chốt.
Bước thứ ba là phép trừ số. Khi một hàng hoặc cột được xác định một phần, số ô chưa được giải còn lại có thể được cập nhật và không gian kết hợp của các số còn lại có thể được tính toán lại. Ví dụ: nếu một dòng đã có 1 dòng bôi đen và số là [2,1] thì khoảng trống còn lại cần được phân bổ lại và có thể suy ra trực tiếp các vị trí bôi đen còn lại.
Sau khi thử nghiệm thực tế, theo quy trình tính toán số học này, tốc độ giải trung bình của một câu đố 20x20 có thể rút ngắn hơn 40%, đặc biệt phù hợp với những cấp độ có “cọc số” dày đặc. Nhân tiện, nghệ thuật pixel được tạo ra bởi những hình ảnh ẩn trong trò chơi rất tinh tế. Tôi thậm chí còn cắt những bức tranh đã vẽ và dùng chúng làm ảnh đại diện, đó là một phần thưởng bất ngờ 😂