csharp高级练习题:路线减少【难度:3级】:
曾几何时,通过老西野的方式,…
…一个男人被赋予方向从一个点到另一个.方向是"北",“南”,“西”,“EAST”.显然,"北方"和"南方"相反,"西部大开发"和"EAST"了.去一个方向,回来向相反的方向是不必要的努力.由于这是狂野的西部,与dreadfull天气和水不多,重要的是要保存自己一些能量,否则你可能会死的渴求!
如何穿越沙漠聪明的办法.
给男人的方向,例如,(取决于语言)如下:
[ "北", "南", "南", "EAST", "西", "北", "西"].
要么
{ "北", "南", "南", "EAST", "西", "北", "西"};
要么
[北,南,南,东,西,北,西]
你可以立刻看到,正在进行的"北",然后在"南方"是不是合理,更好地留在同一个地方!
所以,任务是给男方计划的简化版本.在这种情况下一个更好的计划很简单:
["西方"]
要么
{ "WEST"}
要么
[西方]
其他的例子:
在["北","南","东","西"]
,方向"北" +"南"
向北行驶和回来* 马上*.什么是浪费时间!好做什么.
的路径成为[ "EAST", "西"]
,现在 "EAST"
和"西方"
消灭对方,因此,最后的结果是[]
(Clojure中无).
在[“北”,“东”,“西”,“南”,“西”,“西”],"北"和"南"不直接相反但它们"EAST"减少后成为直接相对和"西方"等全路径是还原为[“WEST”,“西”].
任务
写的函数dirReduc
这将需要一个字符串数组,并返回字符串的移除了不必要的方向的数组矩阵(W < - >电子或S < - > N个侧部由侧).
- 哈斯克尔版本带有方向的列表,
数据方向=北|东|西| South
.
当路径都消失殆尽-The Clojure的版本返回nil.
-The锈病版本需要枚举方向{北,南,东,西}
的切片.