1个不稳定版本
0.1.0 | 2021年10月8日 |
---|
#2545 在 算法 中
每月 36 次下载
在 7 个crate中使用(其中6个直接使用)
465KB
9K SLoC
概述
本模块解决了寻找一组路线的问题,这些路线可以使一家公司获得最高的收入。
例如,以下函数可以在地图上找到特定公司(在此处通过它们的 Token
识别)的最佳路线,假设(游戏特定的)关于哪些元素可以被单个路线重用(conflict_rule
)以及哪些元素可以被多个路线共享(route_conflict_rule
)的规则
use n18route::{paths_for_token, Bonus, Criteria, ConflictRule, Trains, Routes};
use n18map::Map;
use n18token::Token;
fn find_best_routes(map: &Map, token: Token, trains: Trains,
bonuses: Vec<Bonus>) -> Routes {
// Find all of the paths that the trains could operate.
let criteria = Criteria {
token,
path_limit: trains.path_limit(),
// NOTE: game-specific rule.
conflict_rule: ConflictRule::TrackOrCityHex,
// NOTE: game-specific rule.
route_conflict_rule: ConflictRule::TrackOnly,
};
let paths = paths_for_token(&map, &criteria);
// Return the best routes out of the available paths.
trains
.select_routes(paths, bonuses)
.expect("Could not find an optimal set of routes")
}
有关详细信息,请参阅路线查找文档。
依赖项
~10MB
~208K SLoC