Giter Site home page Giter Site logo

liftsystem's Introduction

LiftSystem

电梯系统

使用面向对象编程(Object Oriented Programming)设计一个支持多台垂直电梯的电梯系统。

主要类型:

楼层控制面板(Floor Control Panel)

  • 面板需支持呼叫“向上”和“向下”的电梯。
  • 面板需支持查询当前正在进行中的呼叫。
  • 重复呼叫同一方向的电梯没有效果。
  • 底层呼叫向下电梯没有效果。
  • 顶层呼叫向上电梯没有效果。
  • 电梯(Elevator)
  • 电梯需支持查询当前楼层。
  • 电梯需支持输入新的目标楼层操作。
  • 电梯需支持查询当前所有的目标楼层。
  • 电梯需支持一个“去下一个”(Go to Next)的操作。(详见“行为预期”)
  • 输入超过范围的楼层没有效果。
  • 输入与当前楼层相同的楼层没有效果。

呼叫服务(CallService)

  • 用于记录来自所有楼层面板的呼叫请求。
  • 给行进中的电梯提供“顺路”的呼叫请求。(详见“行为预期”)
  • 给闲置的电梯提供的呼叫请求。(详见“行为预期”)

“Go to Next” 的行为预期

  • 若没有来自楼层的呼叫请求
  • 闲置状态的电梯会前往最近的目标楼层。
  • 向上行进的电梯会前往高于当前楼层的最近一个目标楼层。若没有更高的目标楼层但有更低的目标楼层则开始向下行进。
  • 向下行进的电梯会前往低于当前楼层的最近一个目标楼层。若没有更低的目标楼层但有更高的目标楼层则开始向上行进。

若当前楼层和最近目标楼层之间有呼叫请求

  • 若呼叫方向与当前电梯行进方式一致,则电梯会前往呼叫楼层进行顺路拾客。
  • 若呼叫方向与当前电梯行进方向相反,则电梯会忽略该请求。

若没有目标楼层

  • 若没有呼叫请求,电梯会继续保持静止。
  • 若有呼叫请求,电梯会前往其中一个呼叫中的楼层(开放性题目,没有最优答案)。

其它tips

  • 可假设合理的电梯和楼层数量
  • 无需考虑电梯行进所需要的时间
  • 无需考虑机械层面的复杂性(包括电梯门,马达等)
  • 允许加入新的类、变量和函数用于答题
  • 允许使用本地熟悉的编程环境进行开发和调试(完成后需要将答案粘贴至此)
  • 建议提交前使用测试用例进行自测
  • 答案代码长度应为200-400行左右,最多不要超过600行

liftsystem's People

Contributors

sebastian-getts avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.