X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=robbersrc%2Frobber.cpp;h=abf638b1c1f0c9f4107d3e3f415207bcd5d391b6;hb=42e51f90d84089aa6ecf4b84939bd57b89fe125e;hp=8baf84e23edca71a830f183f36631682dc5394cf;hpb=54e2cf81a6cc187208a849091bda7cd94a10c894;p=icfp05.git diff --git a/robbersrc/robber.cpp b/robbersrc/robber.cpp index 8baf84e..abf638b 100644 --- a/robbersrc/robber.cpp +++ b/robbersrc/robber.cpp @@ -13,26 +13,27 @@ string Robber::turn(){ for (hash_map::const_iterator street = inter.connections.begin(); street != inter.connections.end(); ++street){ if (street->second == car){ - cerr << "Discarding: " << street->first << " since car is needed" << endl; + //cerr << "Discarding: " << street->first << " since car is needed" << endl; continue; } double goodness = 0; Intersection& conInter = _intersections[street->first]; list closestFootCop = shortestPath(street->first, cop_foot, FindPlayer(_players, cop_foot, 6), true); - list closestCarCop = shortestPath(street->first, cop_car, FindPlayer(_players, cop_car, 5), true); - - unsigned int closestCop = 0; + unsigned int closestCop = closestFootCop.size(); + //cerr << "Cop on fot " << closestCop << " intersections away." << endl; bool copInCar = false; + list closestCarCop = shortestPath(street->first, cop_car, FindPlayer(_players, cop_car, closestCop > 0 ? closestCop : 5), true); + //cerr << "Cop in car " << closestCarCop.size() << " intersections away." << endl; + - if (closestCarCop.size() < closestFootCop.size() && closestCarCop.size() > 0){ + if (closestCarCop.size() > 0){ closestCop = closestCarCop.size(); copInCar = true; - }else - closestCop = closestFootCop.size(); + } if (closestCop > 0 && closestCop < 3){ - cerr << "Cop " << closestCop << " intersections away." << endl; + //cerr << "Cop " << closestCop << " intersections away." << endl; continue; } @@ -64,24 +65,24 @@ string Robber::turn(){ banks.pop(); } - cerr << "Goodness before cop: " << goodness << endl; + //cerr << "Goodness before cop: " << goodness << endl; if (closestCop > 2){ - cerr << "Cop " << closestCop << " intersections away." << endl; + //cerr << "Cop " << closestCop << " intersections away." << endl; goodness *= 1 - 1/(copInCar ? closestCop : closestCop - 1); } - cerr << "Goodness after cop: " << goodness << endl; + //cerr << "Goodness after cop: " << goodness << endl; if (conInter.type == bank){ - cerr << "FOUND A BANK" << endl; + //cerr << "FOUND A BANK" << endl; if (closestCop > 0 && closestCop < 4) continue; else if (_banks[street->first] > 0){ - cerr << "No cop close to bank" << endl; + //cerr << "No cop close to bank" << endl; return street->first; } } - cerr << "Street: " << street->first << " goodness: " << goodness << endl; + //cerr << "Street: " << street->first << " goodness: " << goodness << endl; streets[street->first] = goodness; } streets[_oldLocation] /= 10; @@ -93,25 +94,27 @@ string Robber::turn(){ cerr << endl; */ + //stand still if we can't find a better choice.. string destination = _location; double goodness = 0; for (hash_map::const_iterator dest = streets.begin(); dest != streets.end(); ++dest){ - cerr << "Goodness: " << dest->second << endl; + //cerr << "Goodness: " << dest->second << endl; if (dest->second > goodness){ - cerr << "New Goodness: " << dest->second << endl; + //cerr << "New Goodness: " << dest->second << endl; goodness = dest->second; destination = dest->first; } } _oldLocation = _location; + //cerr << "Moving to: " << destination << endl; return destination; } int main(){ - Robber robber("robber"); + Robber robber("harv-robber"); robber.play(); return 0;