LƯU Ý : Người chiến thắng trong cuộc thi này là Jack !!!. Không có nhiều bài nộp sẽ được chấp nhận.
Đây là phòng trò chuyện cho thử thách vua đồi này . Đây là lần đầu tiên của tôi vì vậy tôi mở để đề xuất!
Reaper là một khái niệm trò chơi được phát triển bởi Nghệ thuật giải quyết vấn đề liên quan đến sự kiên nhẫn và tham lam. Sau khi sửa đổi trò chơi để phù hợp với một cuộc thi theo phong cách KOTH (Cảm ơn @NathanMerrill và @dzaima vì những gợi ý và cải tiến của bạn), đây là một thách thức.
Trò chơi hoạt động như sau: chúng tôi có một giá trị được gọi là Reaper nhân với một hằng số cho trước mỗi tích tắc. Sau mỗi lần đánh dấu, mỗi bot có tùy chọn "gặt hái", điều đó có nghĩa là thêm giá trị hiện tại của Reaper vào điểm số của một người, và giảm xuống còn 1.
Tuy nhiên, có một số tích tắc cố định mà bot phải đợi ở giữa "gặt" và một số điểm cố định cần thiết để giành chiến thắng trong trò chơi.
Đủ đơn giản? Đây là đầu vào của bạn:
Tôi / O
Bạn phải viết một hàm trong Python 3 có 3 đầu vào. Đầu tiên là self
, được sử dụng để tham chiếu các đối tượng lớp (hiển thị sau). Thứ hai là Reap
, giá trị hiện tại của Reaper mà bạn sẽ kiếm được nếu bạn "gặt hái". Thứ ba là prevReap
, một danh sách các bot đã gặt hái trong lần đánh dấu trước.
Các đối tượng khác bạn có thể truy cập trong chức năng của mình:
self.obj: An object for your use to store information between ticks.
self.mult: The multiplier that Reap is multiplied by each tick
self.win: The score you need to win
self.points: Your current set of points
self.waittime: The amount of ticks that you must wait between reaps during the game
self.time: The number of ticks since your last reap
self.lenBots: The number of bots (including you) in the game.
self.getRandom(): Use to produce a random number between 0 and 1.
Bạn PHẢI không chỉnh sửa bất kỳ nội dung nào của các đối tượng này, ngoại trừ self.obj
.
Bạn phải xuất ra 1
để gặt, và bất cứ điều gì khác (hoặc không có gì) để không gặt. Lưu ý rằng nếu bạn gặt hái khi bạn chưa đợi đủ số lần đánh dấu, tôi sẽ bỏ qua thực tế là bạn đã chọn để gặt hái.
Quy tắc
Các thông số tôi sẽ sử dụng được winning_score=10000
, multiplier=1.6-(1.2/(1+sqrt(x)))
, waittime = floor(1.5*x)
nơi x
là số chương trình trong KOTH.
- Trò chơi kết thúc khi một người chơi (hoặc nhiều người) đạt được số điểm chiến thắng.
- Khi nhiều bot yêu cầu gặt hái cùng một lúc, ưu tiên dành cho các bot đã chờ đợi lâu hơn (trong trường hợp có quan hệ, các bot đã đợi thời gian tối đa, tất cả đều được phép gặt hái và đạt được điểm trong Reaper)
- Bot của bạn phải mất trung bình không quá 100 ms trên 5 tick.
- Nếu bạn muốn nhập thư viện, hãy hỏi! Tôi sẽ cố gắng thêm bất kỳ thư viện nào tôi có thể chạy trên phiên bản Python trên máy tính để bàn của mình (toán học đã được nhập: hãy sử dụng nó)
- Tất cả các lỗ hổng tiêu chuẩn cho KoTH, chẳng hạn như bot trùng lặp, bot 1-up, v.v., đều bị cấm tương tự.
- Bất kỳ bot nào sử dụng bất kỳ loại ngẫu nhiên nào cũng phải sử dụng
getRandom
chức năng tôi đã cung cấp.
Bạn có thể tìm thấy bộ điều khiển trong liên kết TIO bên dưới. Để sử dụng nó, hãy thêm tên hàm của bạn BotList
thành một chuỗi, sau đó thêm hàm vào mã. Sửa đổi multiplier
để thay đổi số điểm được nhân với mỗi lần đánh dấu, sửa đổi winning_score
để thay đổi số điểm cần thiết để kết thúc trò chơi và sửa đổi waittime
để thay đổi số lượng bọ để chờ giữa các lần gặt.
Để thuận tiện cho bạn, đây là một số bot mẫu (và khá ngớ ngẩn). Gửi các bot tương tự như thế này sẽ không được phép. Tuy nhiên, họ chứng minh cách thức hoạt động của bộ điều khiển.
def Greedybot(self,Reap, prevReap):
return 1
def Randombot(self,Reap, prevReap):
if self.obj == None:
self.obj=[]
self.obj.append(prevReap)
if self.getRandom()>0.5:
return 1
Đối với những người quan tâm, đây là Bộ điều khiển với 15 bài nộp được tích hợp sẵn: Dùng thử trực tuyến
KẾT QUẢ CUỐI CÙNG
WOO THEY LÀ CUỐI CÙNG TẠI ĐÂY! Kiểm tra Liên kết TIO ở trên để xem mã nào tôi đã sử dụng để tạo bảng xếp hạng cuối cùng. Kết quả không thú vị lắm. Hơn 1000 lần chạy tôi đã làm với các hạt ngẫu nhiên khác nhau, kết quả là
1000 wins - Jack
0 wins - everyone else
Xin chúc mừng người chiến thắng Bounty Jack !! (còn gọi là @Renzeee)
len(BotList)
?
25
bot đang chơi. Tuy nhiên, trước tiên sẽ chờ một chút để xem bot của người khác. Rushabh Mehta , sẽ có hạn chót / ngày cuối cùng khi tất cả các bot sẽ được chạy và một người chiến thắng được xác định?