Bạn là một thế giới của chất nhờn. Đương nhiên, là chất nhờn, bạn muốn tiết lộ càng nhiều diện tích càng tốt. Nhưng có 3 slime khác muốn làm điều tương tự chính xác. Ai sẽ là chất nhờn vượt trội?
Sự miêu tả
Tất cả các slime sẽ được tập hợp vào một đấu trường. Các thẩm phán (tức là chương trình kiểm soát) sẽ đi qua một danh sách đầy đủ tất cả các kết hợp 4 chất nhờn có thể, đặt chúng trên các góc của bàn và quan sát để xem chất nhờn nào chảy ra trên khu vực nhất.
Slime của bạn có thể thực hiện một trong 3 hành động mỗi lượt: trải ra, nhảy hoặc hợp nhất. Mô tả thêm về ý nghĩa của những điều này sẽ được cung cấp trong phần Đầu ra .
Ban / Đấu trường
Đấu trường sẽ là một bảng vuông (hiện tại là 8x8, nhưng điều này có thể thay đổi trong tương lai). Dưới đây là một ví dụ về một trò chơi đang diễn ra:
11111222
11111444
11.22444
.1222.4.
333.3244
33333.44
333...44
333....4
Slime được thể hiện bằng các số từ 1 đến 4 (người chơi 1 đến 4) và không gian trống được thể hiện bằng dấu chấm ( .
). Ban đầu, bảng bắt đầu là tất cả các khoảng trống, ngoại trừ một đơn vị slime của người chơi 1 ở góc trên bên trái, người chơi 2 ở trên cùng bên phải, người chơi 3 ở dưới cùng bên trái và người chơi 4 ở dưới cùng bên phải.
Các tọa độ được biểu diễn bằng chỉ số hàng và cột dựa trên 0, để dễ đọc trong mã. Ví dụ: tọa độ (3, 6) đại diện cho hình vuông thứ 7 trong hàng thứ 4 (trong ví dụ trên, a 4
). (Điều này giúp truy cập các ô vuông dễ dàng hơn : board[coords.x][coords.y]
.) Đây là một minh họa trực quan:
(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)
Đầu vào
Đầu vào của chương trình của bạn sẽ là người chơi của bạn (1, 2, 3 hoặc 4), dấu phẩy ( ,
), sau đó là nội dung của bảng / đấu trường (với dòng mới được thay thế bằng dấu phẩy). Ví dụ: nếu bạn là người chơi 3 trong kịch bản trên, đầu vào của bạn sẽ là:
3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4
Đầu ra
Chương trình của bạn phải xuất 4 số nguyên. Hai cái đầu tiên là chỉ số hàng và cột tương ứng của chất nhờn bạn muốn di chuyển, và hai cái tiếp theo là chỉ số hàng và cột của nơi bạn muốn di chuyển chúng.
Có ba lựa chọn bạn có trong mỗi lượt: Trải ra, nhảy hoặc hợp nhất.
Lan tràn
Để lây lan, tọa độ đích phải chính xác cách một ô vuông được di chuyển và ô vuông tại tọa độ đích phải là khoảng trống. Khi lây lan, chất nhờn mới được tạo ra tại tọa độ đích và chất nhờn cũ không bị loại bỏ. Sau khi chất nhờn mới được tạo ra, tất cả các chất nhờn của kẻ thù trong 8 ô vuông xung quanh chất nhờn mới này được chuyển đổi thành người chơi đã di chuyển.
Ví dụ, với bảng trong Hình 1, nếu người chơi 1 xuất ra
0 1 1 2
, kết quả sẽ là bảng trong Hình 2.1. 2. 11.22 11.12 1..22 1.112 ..22. ..11. ..... .....
Nhảy
Để nhảy, tọa độ đích phải chính xác là hai ô vuông cách chất nhờn được di chuyển và hình vuông tại tọa độ đích phải là khoảng trống. Khi jupming, một chất nhờn mới được tạo ra tại tọa độ đích và chất nhờn cũ được loại bỏ. Sau khi chất nhờn mới được tạo ra, tất cả các chất nhờn của kẻ thù trong 8 ô vuông xung quanh chất nhờn mới này được chuyển đổi thành người chơi đã di chuyển.
Ví dụ, với bảng trong Hình 1, nếu người chơi 1 xuất ra
0 1 2 3
, kết quả sẽ là bảng trong Hình 2.1. 2. 11..2 1...2 1...2 1...1 ....2 ...11 ...22 ...11
Hợp nhất
Để hợp nhất, tọa độ đích phải chính xác một ô vuông so với chất nhờn được di chuyển và hình vuông tại tọa độ đích phải là chất nhờn của cùng một người chơi. Khi sáp nhập, chất nhờn cũ được loại bỏ. Sau đó, tất cả các khoảng trống trong 8 ô vuông xung quanh chất nhờn đích được chuyển đổi thành người chơi đã di chuyển (không bao gồm chất nhờn cũ được di chuyển).
Ví dụ, với bảng trong Hình 1, nếu người chơi 1 xuất ra
0 1 1 2
, kết quả sẽ là bảng trong Hình 2.1. 2. 11..2 1.112 1.1.2 11112 ....2 .1112 ..222 ..222
Bạn cũng có thể vượt qua, bằng cách xuất ra các tọa độ không hợp lệ (ví dụ 0 0 0 0
).
Các quy tắc và ràng buộc
Các quy tắc bổ sung là:
- Bạn có thể đọc và ghi các tệp trong thư mục của riêng mình để duy trì dữ liệu (các bài nộp sẽ được lưu trữ
players/YourBotName/yourBotName.language
), nhưng bạn không thể sửa đổi hoặc truy cập bất cứ điều gì khác ngoài nó. Truy cập Internet bị cấm. - Việc gửi của bạn có thể không được mã hóa cụ thể để giúp đỡ hoặc làm tổn thương một bài nộp khác. (Bạn có thể có nhiều bài nộp, nhưng chúng không được tương tác cụ thể với nhau theo bất kỳ cách nào.)
- Việc gửi của bạn phải mất không quá 0,1 giây mỗi lượt. Nếu việc gửi của bạn thỉnh thoảng mất 0,105 giây, điều đó tốt, nhưng nó có thể không nhất quán lâu hơn đáng kể so với giới hạn thời gian này. (Đây chủ yếu là kiểm tra độ tỉnh táo để tránh thử nghiệm mất quá nhiều thời gian.)
- Nội dung gửi của bạn không được trùng lặp chính xác (nghĩa là sử dụng cùng một logic chính xác) của người khác, ngay cả khi đó là ngôn ngữ khác.
- Trình của bạn phải là một đệ trình nghiêm túc. Đây là dựa trên ý kiến, nhưng nếu trình của bạn rõ ràng không cố gắng giải quyết thách thức (ví dụ: nếu bạn vượt qua mỗi lượt), nó sẽ bị loại.
Nếu nội dung gửi của bạn vi phạm bất kỳ quy tắc nào trong số những quy tắc này hoặc không tuân theo thông số kỹ thuật, nó sẽ bị loại, bị xóa khỏi playerlist.txt
và trò chơi sẽ khởi động lại từ đầu. Nếu bài đăng của bạn bị loại, tôi sẽ để lại nhận xét về bài đăng của bạn giải thích lý do. Nếu không, trình của bạn sẽ được thêm vào bảng xếp hạng. (Nếu bạn không thấy bài đăng của mình trên bảng xếp hạng, không có bình luận giải thích về bài đăng của bạn và đăng bài đăng của bạn trước thời gian "Cập nhật lần cuối" bên dưới, xin vui lòng cho tôi biết!
Trong mục của bạn, vui lòng bao gồm:
- Một cái tên.
- Một lệnh shell để chạy chương trình của bạn (ví dụ
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, vv).- Lưu ý rằng đầu vào (trình phát và bản đồ của bạn) sẽ được thêm vào đây dưới dạng đối số dòng lệnh.
- Các chương trình sẽ được kiểm tra trên Ubuntu 14.04, vì vậy hãy đảm bảo mã của bạn có thể được chạy (tự do) trên nó.
- Số phiên bản, nếu mã của bạn hoạt động khác nhau trên các phiên bản ngôn ngữ khác nhau.
- Mã bot của bạn.
- Hướng dẫn cách biên dịch mã, nếu cần.
Mã điều khiển / kiểm tra, ví dụ bot
Mã điều khiển được viết bằng C ++ và có thể được tìm thấy trên Github . Hướng dẫn thêm về cách chạy và kiểm tra mã của bạn có thể được tìm thấy ở đó.
simplebot.rb
, một bot rất đơn giản giúp phát tán hoặc nhảy một chất nhờn ngẫu nhiên đến một vị trí ngẫu nhiên mỗi lượt, cũng được đăng trên Github .
Chấm điểm và bảng xếp hạng
Khi tất cả các ô vuông trên bảng được lấp đầy, trò chơi kết thúc và điểm được tính. Điểm cuối cùng của người chơi là số lượng hình vuông chứa chất nhờn của họ vào cuối trò chơi. Nếu 2000 lượt đã trôi qua (500 cho mỗi người chơi) và trò chơi vẫn chưa kết thúc, trò chơi sẽ kết thúc bằng mọi cách và điểm số sẽ được báo cáo như thể trò chơi đã kết thúc.
Vào cuối giải đấu, điểm số của tất cả các trò chơi sẽ được tính trung bình để tính điểm số cuối cùng của mỗi người chơi, sẽ được đăng trên bảng xếp hạng. Không có thời hạn nộp; Tôi sẽ tiếp tục cập nhật bảng xếp hạng theo định kỳ khi có bài nộp mới.
4 bài nộp được yêu cầu cho đến khi bảng xếp hạng thực sự xuất hiện.
+--------------------------+-----------+--------------------+
| Name | Avg Score | Last Updated (UTC) |
+--------------------------+-----------+--------------------+
| GreedySlime | 47.000 | Jul 22 10:27 PM |
| Jumper | 12.000 | Jul 22 10:27 PM |
| ShallowBlue | 5.000 | Jul 22 10:27 PM |
| Lichen | 0.000 | Jul 22 10:27 PM |
+--------------------------+-----------+--------------------+
Cập nhật lần cuối: ngày 22 tháng 7 10:27 PM (UTC).