https://github.com/yidadaa/huawei-codecraft-2019
本仓库用于存储华为软件精英挑战赛2019年初赛代码。
https://github.com/yidadaa/huawei-codecraft-2019
codecraft2019 huawei
Last synced: 3 months ago
JSON representation
本仓库用于存储华为软件精英挑战赛2019年初赛代码。
- Host: GitHub
- URL: https://github.com/yidadaa/huawei-codecraft-2019
- Owner: Yidadaa
- Created: 2019-03-24T09:30:14.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2019-04-01T09:14:50.000Z (about 6 years ago)
- Last Synced: 2025-03-27T00:08:58.700Z (3 months ago)
- Topics: codecraft2019, huawei
- Language: C++
- Homepage: https://codecraft.huawei.com/Generaldetail
- Size: 3.05 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# HUAWEI-Codecraft-2019
Private repo for HUAWEI codecraft 2019 via Team - HuaHuaGuai.
**此代码在成渝赛区初赛排名35,总时间3526,憾失复赛名额。**### 任务书阅读笔记
#### 系统调度方法
系统调度的顺序是逐车道,逐路口进行调度:
1. 按道路遍历车辆,确定各个车辆的状态:等待行驶状态,终止状态;
2. 处理所有路口处于等待状态的车辆,对于每一个处于等待状态的车辆;C,处理完C的状态之后,还要处理C所在的车道上的其他处于等待状态的车辆状态;
3. 在处理路口车辆时,要检测死锁;
4. 经过路口时交通规则的处理,这一块逻辑很复杂,要写好对应的测试文件;
5. 处理完所有在路上行驶的车辆之后,遍历所有路口的车库,确定是否有车辆到达出发时间;
6. 所有车辆进入终止状态,则本次调度结束。#### 如何确定发车逻辑
1. 从源文件实例化车辆数据后,遍历所有车辆,将其存储在对应的路口中;
2. 根据[系统调度方法](#系统调度方法)第5条确定是否发车,如果有车辆到达发车时间,且初始车道存在余量,则按照[调度优先级](#调度优先级)第6条确定发车顺序,否则需要等待下一个时间片才能发车。#### 调度优先级
1. 行驶车辆优先于待发车车辆;
2. 多车道中,相同道路同一位置的车辆,车道序号小者先行;
3. 多车道中,相同道路不同位置的车辆,无论车道序号如何,排在前面的车辆先行;
4. 路口中,对于同一驶入道路,直行进入的车辆先行,左转进入的车辆后之,最后是右转进入该道路的车辆;
5. 经过路口后,驶入目标道路时,优先进入序号较小车道,若较小车道入口处无空位,则顺次进入次小车道,以此进行,若所有车道均已满,则进入终止状态;
6. 待出发车辆出发时,车辆序号小者先行,驶入初始道路按上一条优先级执行。#### 关于车道的需要注意的点
1. 车道有容量限制,一辆车的长度为1,则长度为L的单车道最多可以容纳L辆车。### 关于核心代码的运行逻辑
1. 模拟车辆行驶时,逐车辆进行模拟,即每次调用Car.move()即可。### 运行此项目
#### 安装`google test`依赖库
`google test`库只会在开发阶段用到,提交代码时并不会用到此库。安装方法:
1. 安装源代码:`sudo apt-get install libgtest-dev`
2. 编译源代码:`cd /usr/src/gtest && sudo cmake . && sudo make`
3. 安装编译完成的文件:`sudo cp libgtest*.a /usr/local/lib`#### 编译并运行
```bash
mkdir build && cd build # 创建缓存目录
cmake .. && make # 编译源代码
cd ../bin && ./TestCodeCraft # 运行单元测试
```### 代码风格约定
本仓库中所有代码应遵循[Google开源项目风格指南](https://zh-google-styleguide.readthedocs.io/en/latest/contents/)。### 版权声明
本仓库下`SDK, doc, data`下数据及文件均来自于[华为软件精英挑战赛官网](https://codecraft.huawei.com/Generaldetail),版权均归华为公司所有。