想象一下,行驶到一个点躺在一个远离水平英里,乙从当前位置英里远垂直。或者换句话说,从(0, 0)
起点到终点(a, b)
。您需要旅行多远?这似乎是一个简单的问题,但是答案取决于您问的是谁。如果你是一只乌鸦,你可以前往直线距离,行驶距离仅仅是欧氏距离来(a, b)
。这是
sqrt(a^2 + b^2)
但是,如果您只是一个无聊的人,那么您真的不想走那么远,因此您需要乘出租车。大多数出租车都不会直线驶向您的目的地,因为他们通常会试图留在道路上。因此,您最终要行驶的实际距离是垂直距离和水平距离的总和。或公式为:
abs(a) + abs(b)
这称为出租车距离。这张图片很好地展示了两者之间的区别:
要前往(6, 6)
,乌鸦只能在绿线上飞行,所以距离6 * sqrt(2)
约为8.49。出租车可以走红色,蓝色或黄色的道路,但全部走12条路。
这引出了我要问的真正问题。如果一只乌鸦和一辆出租车都从起点离开(0, 0)
,然后行驶到终点(a, b)
,出租车的路程将持续多长时间?或者,用更多的数学术语来说,
给定二维向量,请确定向量的norm2与向量的norm1之间的差。
您必须编写最短的程序或函数才能回答此问题。您可以选择将“ a”和“ b”作为两个单独的输入,或作为两个项目的元组。您可以采用任何合理的格式进行输入和输出。如果差异是非整数,则必须至少精确到两位小数。
您始终可以假设'a'和'b'将是整数,并且它们都不都是0。(尽管它们中的任何一个都可能为零)
像往常一样,存在标准漏洞,并尝试使程序尽可能短(以字节计)。
我将对所有答案进行投票,该答案将说明代码的工作原理,并演示用于保存字节的任何绝妙技巧。
以下是一些示例,可用于测试您的代码:
#input #output
3, 4 2
-3, 4 2
-3, -4 2
6, 6 3.51
42, 0 0
10, 10 5.86
3, 3 1.76
打高尔夫球吧!:)
10,10
需要为5.86,因为它出来了5.85786...
,您将其四舍五入到了下面。