fn should_fire(&self, them: &Them, map: &Map) -> Option<Coord> {
        if self.torpedo_cooldown > 0 {
            return None;
        }
        // see Me::torpedo_score for an explanation on this magic number
        if !them.is_position_tracked() || them.ncandidates() > 12 {
            return None;
        }

        let (target, score) = self.best_shot(them, map);
        if score > 29. {
            Some(target)
        } else {
            None
        }
    }
// TODO: play with combinations of Move + Torpedo
play with combinations of Move + Torpedo
play with combinations of Move + Torpedo
fn should_fire(&self, them: &Them, map: &Map) -> Option<Coord> {
        if self.torpedo_cooldown > 0 {
            return None;
        }
        // see Me::torpedo_score for an explanation on this magic number
        if !them.is_position_tracked() || them.ncandidates() > 12 {
            return None;
        }
        let (target, score) = self.best_shot(them, map);
        if score > 29. {
            Some(target)
        } else {
            None
        }
    }
fn should_fire ( & self , them : & Them , map : & Map ) -> Option < Coord > { if self . torpedo_cooldown > 0 { return None ; } // see Me::torpedo_score for an explanation on this magic number if ! them . is_position_tracked ( ) || them . ncandidates ( ) > 12 { return None ; } let ( target , score ) = self . best_shot ( them , map ) ; if score > 29. { Some ( target ) } else { None } }
TODO: play with combinations of Move + Torpedo
TODO : play with combinations of Move + Torpedo
&self
them
&Them
map
&Map
&self
them
&Them
map
&Map