getline(cin, input);
if (input == "game-over")
return;
- cerr << input << endl;
- cerr << "Updating world" << endl;
+ //cerr << input << endl;
+ //cerr << "Updating world" << endl;
updateWorld();
- cerr << "Done updating world" << endl;
+ //cerr << "Done updating world" << endl;
_type = _players[_name].type;
_location = _players[_name].location;
//cerr << "New turn" << endl;
if (type == "foot"){
_intersections[from].connections[to] = both;
Intersection& inter = _intersections[to];
- if (inter.connections.find(from) == inter.connections.end())
+ hash_map<string,StreetType>::iterator conn = inter.connections.find(from);
+ if (conn == inter.connections.end())
inter.connections[from] = foot;
- }else
- _intersections[from].connections[to] = car;
+ else if (conn->second == car)
+ inter.connections[from] = both;
+ }else{
+ Intersection& inter = _intersections[from];
+ hash_map<string,StreetType>::iterator conn = inter.connections.find(to);
+ if (conn == inter.connections.end())
+ inter.connections[from] = car;
+ else if (conn->second == foot)
+ inter.connections[from] = both;
+ }
}
//cerr << "Number of streets: " << streets << endl;
getline(cin, input);
}
void Bot::updateWorld(){
- cerr << "Entered updateWorld function" << endl;
string input;
getline(cin,input);
- cerr << input << endl;
_world = value<int>(input);
- cerr << "World: " << _world << endl;
+ //cerr << "World: " << _world << endl;
getline(cin,input);
_robbed = value<int>(input);
}
std::string Bot::turn(){
- cerr << "Using stupid stand still Bot::turn" << endl;
+ //cerr << "Using stupid stand still Bot::turn" << endl;
return _location;
}
}
for (hash_map<string,Player>::const_iterator player = _players.begin();
player != _players.end(); ++player){
- cerr << "Inital plan for player: " << player->first << endl;
+ //cerr << "Inital plan for player: " << player->first << endl;
if (player->second.type == robber){
_robber = player->first;
continue;
location != maybeRobber.end(); ++location){
if (location->second > 0)
location->second /= possibilities;
- cerr << "World: " << _world << endl;;
cout << "inf: " << _robber << " " << location->first << " " << _playerTypeNames[robber] << " "
<< _world << " " << location->second << endl;
}
//cerr << "Discarding: " << street->first << " since car is needed" << endl;
continue;
}
+ //cerr << "Looking at street: " << street->first << endl;
double goodness = 0;
Intersection& conInter = _intersections[street->first];
list<string> closestFootCop = shortestPath(street->first, cop_foot, FindPlayer(_players, cop_foot, 6), true);
unsigned int closestCop = closestFootCop.size();
- //cerr << "Cop on fot " << closestCop << " intersections away." << endl;
bool copInCar = false;
- list<string> closestCarCop = shortestPath(street->first, cop_car, FindPlayer(_players, cop_car, closestCop > 0 ? closestCop : 5), true);
- //cerr << "Cop in car " << closestCarCop.size() << " intersections away." << endl;
+ //cerr << "Cop on fot " << closestCop << " intersections away." << endl;
+
+ if (closestCop > 0 && closestCop < 3)
+ continue;
+ list<string> closestCarCop = shortestPath(street->first, cop_car, FindPlayer(_players, cop_car, closestCop - 1 > 0 ? closestCop : 5), true);
+ //cerr << "Cop in car " << closestCarCop.size() << " intersections away." << endl;
if (closestCarCop.size() > 0){
closestCop = closestCarCop.size();
copInCar = true;
}
- if (closestCop > 0 && closestCop < 3){
- //cerr << "Cop " << closestCop << " intersections away." << endl;
+ //cerr << "Cop " << closestCop << " intersections away." << endl;
+ if (closestCop > 0 && closestCop < 3)
continue;
- }
priority_queue<double> banks;
for(hash_map<string,int>::const_iterator bank = _banks.begin();
continue;
//list<string>::iterator i = l.begin();
//++i;
- banks.push(bank->second/(pow(l.size(),4.0)));
+ banks.push(bank->second/(pow(l.size(),2.0)));
}
}
//sort(banks.begin(),banks.end(),greater<double>());