Lấy cảm hứng từ xkcd .
Thử thách của bạn là xác định xem một con số có tạo ra sự kết hợp tốt trong trò chơi 2048 hay không . Đầu vào của bạn sẽ là một số, chẳng hạn như:
8224
Và đầu ra sẽ được cho dù con số đó sẽ làm cho 2048 kết hợp tốt, mà cho đầu vào này sẽ là true
hoặc yes
hoặc 1
hoặc bất kỳ cách nào khác cho thấy một kết quả tích cực.
Đối với những người không quen thuộc với trò chơi, đây là một lời giải thích đơn giản: quyền hạn của hai được sắp xếp trên một lưới, như thế này : [2] [2]
. Gạch có thể được di chuyển theo bất kỳ hướng nào, và nếu hai gạch giống nhau gặp nhau, chúng trở thành sức mạnh tiếp theo của hai (vì vậy [2] [2]
khi di chuyển sang trái hoặc phải trở thành [4]
). Hoặc, bạn chỉ có thể thử trò chơi ở đây .
"Một sự kết hợp 2048 tốt" nghĩa là gì? Nó có nghĩa là bất kỳ số nào, nếu trong trò chơi "2048", nó có thể được kết hợp thành một số duy nhất. (Số không có nghĩa là một khoảng trống và có thể bỏ qua nếu cần.) Lưu ý rằng các số có thể có nhiều chữ số! Tuy nhiên, các con số không được thay đổi giữa các lần di chuyển. Dưới đây là một số ví dụ / trường hợp thử nghiệm (với "Tốt" cho thấy sự kết hợp tốt và "Xấu" có nghĩa là không tốt):
- Tốt: 8224 (8224 -> 844 -> 88 -> 16)
- Tốt: 2222 (2222 -> 44 -> 8)
- Tốt: 22048 (22048 -> 448 -> 88 -> 16)
- Xấu: 20482 (không thể kết hợp 2 bên ngoài và bạn cũng không thể kết hợp 2048 và 2)
- Tốt: 20482048 (20482048 -> 4096)
- Xấu: 210241024 (210241024 -> 22048, nhưng giờ đây là [2] [2048] và không thể kết hợp do các số không thể thay đổi giữa các lần di chuyển)
- Tốt: 2048 (đã là một số)
- Xấu: 2047 (nó không phải là sức mạnh của 2)
- Xấu: 11 (không có số 1 nào trong trò chơi)
- Tốt: 000040000000 (số không là khoảng trống)
Quy tắc khác:
- Đầu vào có thể từ bất cứ nơi nào hợp lý, ví dụ STDIN, đối số chức năng, tệp, v.v.
- Đầu ra cũng có thể là bất cứ nơi nào hợp lý, ví dụ STDOUT, giá trị trả về của hàm, tệp, v.v.
- Bỏ qua kích thước lưới -
22222222
vẫn nên xuất đúng. - Số này không tối đa với số s có thể là bao nhiêu, miễn là nó có sức mạnh bằng hai. Do đó, các số có thể là bất kỳ lũy thừa nào của hai lớn hơn 0.
- Đối với những người lo lắng về số không gây ra sự mơ hồ, đó không phải là trường hợp. Ví dụ,
22048
có thể được phân tích cú pháp dưới dạng[2] [2048]
hoặc[2] [2] [0] [4] [8]
. Cái đầu tiên không hoạt động, nhưng cái thứ hai thì không, vì vậy nó sẽ xuất ra đúng. - Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng!
22048
nên xuất good
nhưng điều đó không đúng. Bạn không thể kết hợp 2
với 2048
và lưới là4x4
nếu tất cả các số sẽ tách biệt bạn sẽ nhận được 5 ô. Vì vậy, có lẽ bạn nên loại bỏ 0
? Ngoài ra ví dụ thứ 5 của bạn dường như không hợp lệ vì trò chơi dừng lại ở 2048
:)
1