Săn trứng Phục sinh
Bot tìm trứng trước khi thỏ tìm trứng. Bot hạnh phúc.
Tổng quat
Đây là một thử thách vua trên đồi để tôn vinh lễ Phục sinh và truyền thống săn trứng Phục sinh!
Bot của bạn có tầm nhìn về hai không gian theo mọi hướng, bao gồm các đường chéo, tạo ra một hình vuông 5x5 xung quanh bạn mà bạn có thể nhìn thấy. Nó đang tìm trứng, và ai tìm được nhiều trứng nhất sẽ thắng!
Hội đồng quản trị
Bảng sẽ bao gồm o
s, đó là trứng Phục sinh, #
s, là tường, *
s, là những người chơi khác và s, là những khoảng trống.
- Nó sẽ là một hình vuông với chiều dài cạnh
(number of entries) * 3
. - Nó sẽ được bao quanh bởi các bức tường.
- Bên trong các bức tường sẽ là một loại gồm các bức tường thẳng, được đặt ngẫu nhiên
#
, sẽ có chiều dài ngẫu nhiên trong khoảng từ 2 đến 10. Sẽ có(number of entries) * 3
họ. - Trứng sau đó sẽ được đặt ngẫu nhiên. Sẽ có
(number of entries) * 4
chúng và chúng sẽ chỉ được tạo trên cácô vuông ( ) trống .
- Phải có ít nhất 7 nhiệm vụ để quy trình tạo bảng hoạt động đúng.
Dưới đây là một JSFiddle sẽ tạo ra một bảng ngẫu nhiên để bạn kiểm tra. Đây là một ví dụ, với (number of entries) = 7
:
#####################
# o ##
# # o ##
# #o ###### ##
###### # ##
## o # # ##
## o# #o# o o##
## #o # # o # #
## # o # # # #
## ## # # o # #
## # # o # # #
## # o # ## # # #
## # # # #
# o # ## # #
# o oo ##o #
#o ####### oo ## #
# # # #
# o o o# #
# o #### o o#
# #
#####################
Sau khi bảng được tạo, mỗi người chơi được đặt trên một hình vuông ngẫu nhiên (không gian trống).
Đầu vào
Bạn sẽ mất sáu dòng đầu vào. Năm dòng đầu tiên là tầm nhìn của bạn (không gian ngoài giới hạn của bảng sẽ được đại diện X
và không gian giữa sẽ luôn là *
bạn) và dòng thứ sáu sẽ trống (lúc đầu).
Đầu ra
Bạn sẽ xuất ba dòng. Đầu tiên, hướng mà bạn muốn di chuyển đến:
1 2 3
8 YOU 4
7 6 5
(9 là một không-op nếu bạn không muốn di chuyển), thứ hai, một trong những A
ttack, C
ounter, hoặc N
othing (điều này sẽ được giải thích sâu sớm), và dòng thrid sẽ được bất kỳ chuỗi có độ dài lên đến 1024 Đây sẽ là bộ nhớ bot của bạn. Bạn có thể sử dụng nó cho bất cứ điều gì bạn muốn, hoặc bạn có thể để trống. Bộ nhớ này sau đó sẽ là dòng đầu vào thứ sáu cho chương trình của bạn trong lần chạy tiếp theo.
Tất cả các dòng đầu ra tiếp theo được bỏ qua và nếu chỉ có một dòng, dòng thứ hai được coi là trống.
Di chuyển
Quá trình sau đây được sử dụng để xác định nơi bạn di chuyển:
- Nếu, khi bạn di chuyển, bạn kết thúc trong một khoảng trống (
), trình phát của bạn được đặt vào khoảng trống đó.
- Nếu bạn kết thúc trong một bức tường (
#
), di chuyển của bạn bị bỏ qua và bạn mất lượt của mình. - Nếu bạn kết thúc trong một quả trứng (
o
) hoặc trên một người chơi (*
), thông tin này sẽ được lưu trữ và sẽ được sử dụng sau khi mọi người đã di chuyển.
Sau khi mọi người đã di chuyển, sự mơ hồ được giải quyết.
Nếu có hai người chơi đã hạ cánh trên cùng một không gian, một cuộc chiến sẽ xảy ra! Đây là nơi A
/ C
/ N
đến để chơi. A
ttack nhịp đập nhẹ N
nhàng (tấn công bình thường), N
nhịp đập nhẹ C
nhàng (bạn không thể chống lại điều gì) và C
cuộc chạm trán nhịp đập A
ttack (phản công). Người chơi chiến thắng trong cuộc chiến này sẽ ở lại quảng trường của họ và người chơi thua sẽ quay lại quảng trường ban đầu mà họ bắt đầu. Trong trường hợp hòa, cả hai người chơi quay trở lại nơi họ đang ở.
Nếu một người chơi bị mất hoặc bị trói trở lại nơi họ đang ở và có một người chơi khác ở đó, không có chiến đấu và người chơi khác cũng sẽ trở lại không gian ban đầu của nó. Nếu này không gian có người chơi khác, mà người chơi quay ngược lại, và điều này tiếp tục cho đến khi tất cả người chơi trong không gian khác nhau.
Nếu có ba hoặc nhiều người chơi trên một không gian, tất cả họ sẽ quay trở lại vị trí ban đầu của họ.
Nếu bất kỳ người chơi nào vẫn đứng trên một quả trứng ...
- Nếu người chơi chọn
A
, quả trứng sẽ bị phá hủy. - Nếu người chơi chọn
C
, không có gì xảy ra và người chơi trở lại không gian ban đầu. - Nếu người chơi chọn
N
, người chơi nhặt trứng! Điểm của người chơi được tăng lên một và trứng được loại bỏ.
Ngôn ngữ
Bạn có thể sử dụng bất kỳ ngôn ngữ nào có sẵn miễn phí trên Windows, OSX và Linux, để đảm bảo sự công bằng giữa mỗi thí sinh. Nếu mã không thể tự do chạy được nhưng có thể được biên dịch hoặc đóng gói thành định dạng, vui lòng bao gồm định dạng này trong câu trả lời của bạn. Lý tưởng nhất, nếu bạn có thể biên dịch mã của mình thành một ngôn ngữ phổ biến hơn (ví dụ CoffeeScript -> JavaScript), vui lòng làm như vậy.
Chấm điểm
Điểm của bạn sẽ là số trứng trung bình bạn thu thập được sau mười lần chạy. Một cuộc chạy kết thúc khi tất cả trứng được thu thập hoặc khi (number of entries * 25)
lượt đã qua. Tôi sẽ tự đảm bảo rằng có thể tiếp cận tất cả trứng cho mỗi bản đồ (bằng cách liên tục tạo bản đồ cho đến khi tất cả trứng có thể tiếp cận được).
Bảng điểm
Một bảng điểm sẽ được thêm vào khi tất cả các điều kiện sau được đáp ứng:
- Ít nhất bảy mục hợp lệ có điểm số dương hoặc bằng 0 (không được đánh giá thấp) đã được gửi
- Ít nhất 48 giờ đã trôi qua kể từ khi tạo ra thử thách này (UTC 14:23)
Các quy tắc sẽ không thay đổi trong giai đoạn trước cuộc thi này, ngoại trừ để thêm làm rõ trong đó quy tắc không rõ ràng. Sau khi bảng điểm được đưa lên, chương trình kiểm tra cũng sẽ được đăng ở đây để bạn có thể kiểm tra các mục của mình. Mã thử nghiệm cho việc này vẫn đang được tiến hành, nhưng nó có thể chơi được và nó hoạt động. Đây là repo GitHub.
9
, anh ta không bao giờ có thể bị tấn công một cách có ý nghĩa. Nếu một người chơi khác (B) bước lên ô vuông của người chơi đó và thắng, A sẽ được chuyển về hình vuông ban đầu của nó (giống như vậy). Nhưng bây giờ có một cuộc đụng độ vì cả A và B đều ở đó, vì vậy B phải quay lại quảng trường của chính mình. Vì vậy, kết quả là độc lập với cuộc chiến thực tế, B luôn di chuyển trở lại hình vuông ban đầu và A luôn luôn đặt. Điều đó sẽ cho phép tôi viết cả hai có thể giúp trình khác bằng cách chặn đường dẫn cho những người khác.