python高级练习题:电梯【难度:5级】:

  • 我敢打赌,你永远不会赶上电梯(又名电梯)同样没有这个习题的思考!*

简介

一个多层建筑中有一个提升.

人们排队在不同的楼层等候电梯.

有些人想上去.有些人想下去.

他们要到由数字表示的地板(即,当他们进入电梯,这是他们将按下按钮)


BEFORE(人排队等候)后(人他们的目的地)
                   +  -  +  -  +
  / ---------------- | | ---------------- \ / ---------------- | | ---------------- \
10 | | | 1,4,3,2 | 10 | 10 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 9 | | | 1,10,2 | 9 | | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 8 | | | | 8 | | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 7 | | | 3,6,4,5,6 | 7 | | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 6 | | | | 6 | 6,6,6 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 5 | | | | 5 | 5,5 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 4 | | | 0,0,0 | 4 | 4,4,4 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 3 | | | | 3 | 3,3 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 2 | | | 4 | 2 | 2,2,2 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 1 | | | 6,5,2 | 1 | 1,1 | | |
  | ---------------- | | ---------------- | | ---------------- | | ---------------- |
 G | | | | G | 0,0,0 | | |
  | ==================================== | | ==================================== |

规则

抬起规则

  • 该电梯只向上或向下!
  • 每个楼层有UP和DOWN电梯呼叫按钮(除仅具有向下和向上分别在顶部和接地层)
  • 直到有没有更多的人希望得到的开/关在它已经行驶方向上的提升不会改变方向
  • 当空的电梯尝试要聪明.例如,
     * 如果它上升则可能持续到收集最顶层的人想下去
     * 如果往下走则可能继续向下收集想要去了最底层的人
  • 这部电梯的人的最大容量
  • 调用时,电梯会在一个楼层停止** 即使是充满**,但除非别人下车还没人能上!
  • 如果电梯是空的,也没有人在等待,那么它将返回地面

人规则

  • 人都在**“队列” ** 代表他们到达的顺序等待电梯
  • 所有的人都可以按UP / DOWN电梯呼叫按钮
  • 只有人去** 的相同方向** 为升程可以进入它
  • 作品是根据**"排队"为了**,但那些无法进入不会阻止那些在他们身后,可
  • 如果一个人是无法进入一个完整的电梯,他们将再次按UP / DOWN电梯呼叫按钮后,它已经离开了,没有他们

习题任务

  • 获取所有的人,他们想要去的同时服从电梯** ** 规则和** 人规则的地板**
  • 返回所有楼层的清单,电梯停在(在访问的顺序!)

注:电梯总是从一楼(和人民等待一楼可以立即进入)

I / O

输入

队列为

人们对于建筑的所有楼层队列的列表.
 * 建筑物的高度变化
 * 0 =一楼
 * 并非所有楼层都队列
 * 队列索引[0]是队列的"头"
 * 数字表示人想要去的楼层
允许在电梯的人*

能力

最大数量

  • 参数验证* - 所有输入参数可以假定确定.不需要检查的东西,如:

  • 人们想要去不存在的楼层

  • 人们想要乘电梯到地面,他们已经在

  • 与<2层建筑物

  • 地下室

输出

  • 该电梯停在各楼层的列表(按顺序访问!)

示例

引用示例测试用例.

语言的注意事项

  • Python:该对象将在测试中被初始化为你


祝好运 -

DM

</跨度>

编程目标:

class Dinglemouse(object):
    def __init__(self, queues, capacity):
        pass
    def theLift(self):
        return []


测试样例:

# Floors:    G     1      2        3     4      5      6         Answers:
tests = [[ ( (),   (),    (5,5,5), (),   (),    (),    () ),     [, 2, 5, 0]          ],
         [ ( (),   (),    (1,1),   (),   (),    (),    () ),     [, 2, 1, 0]          ],
         [ ( (),   (3,),  (4,),    (),   (5,),  (),    () ),     [, 1, 2, 3, 4, 5, 0] ],
         [ ( (),   (0,),  (),      (),   (2,),  (3,),  () ),     [, 5, 4, 3, 2, 1, 0] ]]
for queues, answer in tests:
    lift = Dinglemouse(queues, 5)
    test.assert_equals(lift.theLift(), answer)
    


最佳答案(多种解法):

点击查看答案

更多关联题目:

交流讨论:

景越Python基础训练营QQ群

欢迎各位同学加群讨论,一起学习,共同成长!

免责申明:

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars/
https://www.codewars/kata/the-lift

更多推荐

python高级练习题:电梯【难度:5级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶