Công việc của bạn là mô phỏng một trò chơi hoàn hảo về mặt toán học vào năm 2048. Ý tưởng là tìm ra giới hạn trên lý thuyết về việc một trò chơi 2048 có thể đi được bao xa và tìm cách đến đó.
Để có được ý tưởng về cái này trông như thế nào, hãy chơi với bản sao 2x2 này và cố gắng ghi được 68 điểm. Nếu bạn làm như vậy, bạn sẽ kết thúc với một gạch 2, 4, 8 và 16. Không thể vượt qua điểm đó.
Nhiệm vụ của bạn được thực hiện dễ dàng hơn bởi vì bạn có thể chọn nơi gạch sinh sản và giá trị của chúng là gì, giống như bản sao này .
Bạn phải viết một chương trình hoặc chức năng chấp nhận một bảng 2048 làm đầu vào và xuất ra bảng với ô được sinh ra và bảng sau khi thu gọn các ô. Ví dụ:
Input:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 0 8 8
Output:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 4 8 8
0 0 0 0
0 0 0 0
0 0 0 0
0 0 4 16
Chương trình của bạn sẽ liên tục được cung cấp đầu ra của chính nó để mô phỏng toàn bộ trò chơi vào năm 2048. Đầu vào đầu tiên của chương trình sẽ là một bảng trống. Bạn phải sinh ra một ô trên nó, không giống như hai ô của trò chơi gốc. Ở bước cuối cùng của trò chơi, bạn sẽ không thể di chuyển, do đó hai bảng đầu ra của bạn có thể giống hệt nhau.
Tất nhiên bạn phải chỉ di chuyển hợp pháp đầu ra. Chỉ có thể sinh ra 2 hoặc 4, bạn phải di chuyển hoặc thu gọn ít nhất một ô khi di chuyển, v.v.
Tôi đã cố tình làm cho các yêu cầu đầu vào và đầu ra mơ hồ. Bạn có thể tự do chọn định dạng của đầu vào và đầu ra. Bạn có thể sử dụng ma trận, mảng, chuỗi hoặc bất cứ điều gì bạn muốn. Miễn là bạn có thể mô phỏng một trò chơi 2048 với họ, đầu vào và đầu ra của bạn đều ổn.
Người chiến thắng sẽ là người kết thúc trò chơi với tổng số ô cao nhất trên bảng, sau đó bằng số byte thấp nhất trong mã nguồn. Việc tính điểm từ trò chơi gốc sẽ không được tính đến. (Gợi ý: sử dụng 4)