Tôi đã gặp vấn đề sau trong một cuộc phỏng vấn (rằng tôi đã không giải quyết được, không cố gắng gian lận trong quá khứ): Trò chơi bắt đầu với số nguyên dương . (Ví dụ A 0 = 1234. ) Số này được chuyển đổi thành biểu diễn nhị phân và N là số bit được đặt thành 1 . (Ví dụ: A 0 = b , N = 5. )
Người chơi 1 chọn số nhỏ hơn A 0 . B 0 chỉ có một bit được đặt thành 1. (Ví dụ: B 0 = b 10 0000 0000 = 512. ) Đặt A 1 = A 0 - B 0 . (Ví dụ: A 1 = 1234 - 512 = 722 = b 10 1101 0010. ) Di chuyển là hợp lệ nếu B 0đáp ứng những hạn chế trước đó, và nếu số lượng các bit đặt trong là vẫn tương đương với N .
Người chơi 2 tiếp tục từ bằng cách chọn B 1 hợp lệ , sau đó người chơi 1 tiếp tục từ A 2 , v.v. Một người chơi thua nếu họ không còn di chuyển hợp lệ.
Giả sử cả hai người chơi chơi tối ưu, xác định người chơi chiến thắng bằng phương pháp hợp lý hiệu quả. (Theo định nghĩa vấn đề của tôi, hạn chế của điều này là chương trình phải có khả năng cung cấp giải pháp cho một vài triệu số đầu vào phù hợp với số nguyên 32 bit đã ký.) Đó là, giải pháp không cần phải có phân tích đầy đủ.
Sở thích cá nhân của tôi ở đây là tìm hiểu xem liệu kỳ vọng của tôi có tìm ra và thực hiện giải pháp chính xác mà không có phản hồi nào về tính đúng đắn trong 120 phút tôi đưa ra là hợp lý hay không; hoặc nếu đây là một trong những câu hỏi "hãy xem họ đã xem câu đố này trước đây chưa".
Tôi đã thất bại vì tôi đã chọn thực hiện một chiến lược hợp lý, điều đó mang lại cho tôi kết quả chính xác cho một vài trường hợp thử nghiệm mà tôi đã từ bỏ, lãng phí quá nhiều thời gian để thực hiện nhanh chóng và kết thúc không chính xác đầu ra đầy đủ như thời gian của tôi đã hết.
Nhìn lại, tôi nên thực hiện một tìm kiếm mạnh mẽ và ghi nhớ các giải pháp từng phần cho các số bắt đầu nhỏ, nhưng nhận thức muộn luôn là 20/20. Tuy nhiên, tôi tò mò nếu có một cách tiếp cận phổ biến khác đã lảng tránh tôi như một kẻ lừa đảo.