每天开心一点

Python: 每日一题 51

2017-11-27 13:38:00    六月    521    来源: http://bbs.fishc.com/thread-87553-1-1.html

简单了几天了,今天是不是要弄点难的呢?那么我们就来点难的吧!5kyu的题目!(不过我感觉还好!)

一个人获得了前往另一个地方的方向指示。指示是这样的,"NORTH", "SOUTH", "WEST", "EAST".
显然"NORTH", "SOUTH"是相反的,"WEST", "EAST"是相反的。连续的两个不同方向的走是无效的。
那么现在就请去除掉这些相对的方向,找出真正的方向吧。

例子:
  1. dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]) => ["WEST"]
  2. dirReduc(["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH"]) => []
复制代码


注意:
["NORTH", "WEST", "SOUTH", "EAST"]是不可以约除"NORTH", "SOUTH"的哦。"NORTH" and "WEST", "WEST" and "SOUTH", "SOUTH" and "EAST" 不是直接的反方向哦。所以答案就是他本身"NORTH", "WEST", "SOUTH", "EAST"].

  1. a = ["NORTH", "SOUTH", "SOUTH", "EAST", "WEST", "NORTH", "WEST"]
  2. test.assert_equals(dirReduc(a), ['WEST'])
  3. u=["NORTH", "WEST", "SOUTH", "EAST"]
  4. test.assert_equals(dirReduc(u), ["NORTH", "WEST", "SOUTH", "EAST"])



  1. opposite = {'NORTH': 'SOUTH', 'EAST': 'WEST', 'SOUTH': 'NORTH', 'WEST': 'EAST'}

  2. def dirReduc(plan):
  3.     new_plan = []
  4.     for d in plan:
  5.         if new_plan and new_plan[-1] == opposite[d]:
  6.             new_plan.pop()
  7.         else:
  8.             new_plan.append(d)
  9.     return new_plan