/RobotPuzzle

Robot, robot, robot!

Primary LanguageC++GNU General Public License v3.0GPL-3.0

RobotPuzzle

为喜迎双十一,某快递公司欲购入一批新的机器人来管理仓库。经过工程师的研究发现,机器人分为四个组件:底座机械臂电池发动机

这四个组件分别负责不同的工作:

底座 提供固定其他器材的位置,可最多装载 9 个机械臂9 个电池9 个发动机。每个机器人只包含一个底座。

机械臂 提供抓取货物的功能,每个机械臂一次能拿去 2kg 货物。

电池 为机器人提供动力,每个电池供电 3分钟 供电能力。

发动机 为机器人提供动力,每个发动机提供 3 点动力值

此外,这四个组件各有一定的质量:

组件 质量 组件 质量
底座 2kg / 个 机械臂 1 kg/个
发动机 1kg / 个 电池 0.5 kg/个

机器人的速度符合以下公式:

机器人拿取货物货物需要 2分钟,货物距离机器人的距离为 10。请问怎样配置机器人才能让机器人最快的拿完 20kg 的货物。(特别强调:机器人每次必须所有机械臂拿完货物之后才可以返回,不存在总货物被拿完的情况。)

精简描述

  • 底座 2kg,各种器材最多装 9 个
  • 机械臂 1kg/个,每个一次拿 2kg 货物
  • 电池 0.5kg/个,每个供电 3分钟
  • 发动机 1kg/个,每个提供 3 点动力值
  • 速度 = 动力值 - 质量 * 0.5
  • 拿取货物需要 2分钟
  • 怎么配置机器人,能够最快拿完 20kg 货物,距离 10

提交要求

  • 提交方式 Pull Request
    • 需要建立命名为自己名字的文件夹
    • 文件夹内存放名为 robot.cpp 的文件
    • 文件夹内存放名为 demonstration.md 的文档。该文档以 Markdown 语法编写证明你代码运行结果正确的文档。
      • 你可以通过数学方法证明结果正确
      • 也可以通过枚举法遍历问题空间
      • 若都做不到也可以详细的描述你代码的逻辑
  • 注意 Code style,无需过分遵循文章写法,本着有益于阅读的原则就可以了。
  • 完整的日志输出
    • 列出每次计算时机器人的参数
    • 最后输出成绩最佳的机器人
  • 项目开始日期:2017年11月16日
  • 项目结束日期:2017年11月30日
  • 若对题目有问题,可在本仓库提 issue,我会逐一回复。

日志举例

Testing robot: 4 arm, 4 engine, 4 battery, finished at time:xx
Testing robot: 4 arm, 4 engine, 5 battery, finished at time:xx
Testing robot: 4 arm, 4 engine, 6 battery, finished at time:xx
Testing robot: 4 arm, 5 engine, 4 battery, finished at time:xx
Best robot: 4 arm, 4 engine, 4 battery, finished at time: xx

上面的数字是瞎写的,不代表正确答案