Advertisement
Draco18s

Relic Hunter Deep Diver

Apr 14th, 2019
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1. from __main__ import Adventurer
  2.  
  3. class DeepDiver(Adventurer):
  4.     def get_action(self, state):
  5.         if state.treasures:
  6.             tvals = {}
  7.             for i in range(len(state.treasures)):
  8.                 itm = state.treasures[i]
  9.                 w = itm.weight
  10.                 v = itm.value
  11.                 if w + state.carry_weight > self.max_total_weight or w > self.max_single_weight:
  12.                     w = 100
  13.                 if v / w < state.room * self.min_value_ratio:
  14.                     v = 0
  15.                 tvals[i] = v / w
  16.             besttind = max(tvals, key=lambda x: tvals[x])
  17.             bestt = (besttind,
  18.                      state.treasures[besttind].value,
  19.                      state.treasures[besttind].weight)
  20.         else:
  21.             bestt = None
  22.         if state.room < self.max_dive_dist and state.carry_weight == 0:
  23.             return 'next'
  24.         if bestt and state.carry_weight + bestt[2] <= self.max_total_weight and bestt[1] > 0 and bestt[2] <= self.max_single_weight:
  25.             return 'take',bestt[0],bestt[2]
  26.         return 'previous'
  27.     def enter_ruins(self):
  28.         self.max_single_weight = 2
  29.         self.max_total_weight = 15
  30.         self.min_value_ratio = 2
  31.         self.max_dive_dist = 43
  32.         pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement