给定一串N,S,E和W,输出方位角(以度为单位从北方顺时针旋转的角度),精确到小数点后5位。
在传统的指南针表示法中,字符串仅由其中两个字符组成(例如NNW或ESE)。在这里,您还必须接受包含所有4个字符串(例如WNNNSE)。仅使用2个符号即可使人们直观地理解其含义。允许使用4个符号使阅读变得很恐怖,但是允许以较短的方式描述给定精度的轴承。
(正如user2357112的注释中指出的那样,事实证明您可以证明对于任何给定方位,4符号字符串的长度将与2符号字符串的长度完全相同,因此我将这一挑战基于错误的假设。希望这种缺乏实际用途不会损害您对挑战的享受...)
确切的方法如下所述,并且等效于传统的表示法(它在其上进行扩展而不是对其进行更改)。
输入项
- 输入是仅包含字符的单个字符串
NESW。 - 如果您愿意,输入可以是一个字符序列,前提是该输入不包含任何预处理。例如,
[N, [E, [S, [W]]]]不允许使用嵌套列表来帮助处理顺序。 - 不允许使用其他字符。您不能使用
1234代替的字符串NESW。
输出量
- 输出必须是十进制数字或一的字符串表示形式(不是有理数/分数)。
- 不需要显示尾随零。如果方位角是
9.00000,则输出9也算作正确的小数点后5位。 - 输出范围为[0,360)。也就是说,包括0但不包括360。
- 通过将输出四舍五入到小数点后五位来检查正确性。如果轴承为0.000005,则四舍五入为0.00001。输出0.00001和0.000005都是正确的。
- 对于某些输入,以科学计数法表示的输出是可以接受的。例如,
1e-5代替0.00001。
转换次数
- 单字符罗盘点
N,E,S,和W分别对应于0,90,180,以及270度。 - 将其中之一添加到字符串会导致方位将单个字符的方位和原始弦的方位一分为二。
- 选择两个可能的平分轴承中最接近的一个,以便NE代表45度,而不是225度。
- 除了要平分的角度为180度的地方,这是明确的。因此
NS,SN,WE,和EW对应于未定义的轴承,以及输入将永远不会在任何这些结束。但是,它们可能会出现在输入字符串的任何其他位置,因为这不会引起歧义。 - 如果最后两个字符相同,则最后一个字符将是多余的,因为二等分将返回相同的方位。由于这没有为表示法添加任何内容,因此您的代码无需处理。因此
NN,EE,SS,和WW对应于未定义的轴承,以及输入将永远不会在任何这些结束。但是,它们可能会出现在输入字符串的其他任何地方。
例子
N: 0
E: 90
S: 180
SE: halfway between S and E: 135
NSE: halfway between N and SE: 67.5
NNSE: halfway between N and NSE: 33.75
NNNSE: halfway between N and NNSE: 16.875
NNNNSE: halfway between N and NNNSE: 8.4375
测试用例
提交仅在给出所有测试用例的正确输出时才有效。请注意,测试用例达到了可以双精度处理的极限。对于默认为单精度的语言,您可能需要花费字节来指定双精度,以获取正确的输出。
测试用例输出显示为四舍五入到小数点后五位,并且四舍五入为任意精度。两者都是有效的输出。
WNE 337.5 337.5
WEN 337.5 337.5
WEWEWEWEWEWEWEWEWEWEWEN 330.00001 330.000007152557373046875
NESWNESWNESWNESWNESWNESWNESW 90 89.99999932944774627685546875
NNNNNNNNNNNNNNNNNNNNNNNE 0.00001 0.0000107288360595703125
NNNNNNNNNNNNNNNNNNNNNNNW 359.99999 359.9999892711639404296875
SNNNNNNNNNNNNNNNNNNNNNNNE 90.00001 90.00000536441802978515625
SNNNNNNNNNNNNNNNNNNNNNNNW 269.99999 269.99999463558197021484375
计分
这是代码高尔夫球。分数是源代码的长度(以字节为单位),最短者获胜。
脚踏车
我误以为“西北偏北”是正确的指南针方向。一个错误的错误,因为它导致了一个挑战性的构想,但后来我在Wikipedia页面上发现:
“ Alfred Hitchcock 1959电影的标题,西北偏北,实际上不是32风指南针的方向点,而是电影中提到了西北航空公司。”
事实证明,用于此挑战的方法仅与传统的罗盘指针一致,直到16点罗盘为止。该页面上描述的32风罗盘略有不同,我很容易忽略了它的存在以应对这一挑战。
最后,对于任何认为我应该使用“东南”而不是“东南”的人,。
WNNNSE,输出为323.4375。请参阅示例部分,以获取与本案例相同的演练。
f(N,N,N,S,E)还好?
WNNNSE<=在您的帖子开始时,此示例条目的输出是什么?这对我来说听起来是无效的,但这很难说。