这是受Chebyshev Rotation启发的挑战。我建议在那里查看答案以从中获得灵感。
给定平面上的一个点,存在一个以原点为中心并与该点相交的唯一正方形(边长相等的矩形)(Interactive demo):
给定一个点p和距离d,返回由移动距离获得的点d从p,逆时针(顺时针和负 d),沿方形的周边围绕原点相交p。您的答案必须精确到至少4个十进制数字。
测试用例:
(0, 0), 100 -> (0, 0)
(1, 1), 81.42 -> (-0.4200, 1.0000)
(42.234, 234.12), 2303.34 -> (-234.1200, 80.0940)
(-23, -39.234), -234.3 -> (39.2340, -21.8960)
以下测试用例来自Martin Ender最初提出的挑战,且所有测试用例的d = 1:
(0, 0) -> (0, 0)
(1, 0) -> (1, 1)
(1, 1) -> (0, 1)
(0, 1) -> (-1, 1)
(-1, 1) -> (-1, 0)
(-1, 0) -> (-1, -1)
(-1, -1) -> (0, -1)
(0, -1) -> (1, -1)
(1, -1) -> (1, 0)
(95, -12) -> (95, -11)
(127, 127) -> (126, 127)
(-2, 101) -> (-3, 101)
(-65, 65) -> (-65, 64)
(-127, 42) -> (-127, 41)
(-9, -9) -> (-8, -9)
(126, -127) -> (127, -127)
(105, -105) -> (105, -104)
难道不是所有其他挑战都只是稍作改动了吗?这似乎是不必要的补充。
—
ATaco
@ATaco不,它要复杂得多。
—
orlp
是否应该从p开始沿周长计算距离?
—
加博尔·费克特(GáborFekete)
@GáborFekete还有什么?
—
orlp
是的,我知道,测试用例暗示了这一点,但并未明确说明。我最初以为它将从x轴的正交点开始。
—
加博尔·费克特(GáborFekete)