介绍
假设您在二维笛卡尔平面上,并且想确定您在该平面上的位置。您知道飞机上的3个点以及与每个点的距离。虽然总是可以从中计算出您的位置,但是在您的头脑中做到这一点非常困难。因此,您决定为此编写一个程序。
挑战
给定3点和您到它们的距离,输出您位置的坐标。
- 输入和输出可以采用任何方便的格式,包括使用复数而不是实数。请在您的答案中说明使用的格式。
- 您将始终获得3个与您之间的距离完全不同的点。
- 坐标和距离将是具有任意精度的浮点数。您的输出必须正确到小数点后三位。取整由您决定。请在您的答案中阐明。
- 您可能会认为这三个点不是共线的,所以总会有一个唯一的解决方案。
- 您无权强加解决方案。
- 您可能不会使用任何琐碎此特定问题的内置函数。不过,允许使用矢量规范等的内置函数。
上手提示:
考虑围绕这三个点的每个圆,以它们到您的距离为半径。
规则
测试用例
这里一个点的输入格式是[[x,y],d]
和x
,y
分别是坐标和d
到该点的距离。这些点中的3点排列在一个列表中。输出将是x
然后y
在列表中。
[[[1,2],1.414],[[1,1],2.236],[[2,2],1.0]]-> [2,3] [[[24.234,-13.902],31.46],[[12.3242,234.12],229.953],[[23.983,0.321],25.572]]-> [-1.234,4.567] [[[973.23,-123.221],1398.016],[[-12.123,-98.001],990.537],[[-176.92,0],912.087]]-> [12.345,892.234]
您可以使用此Pyth程序生成其他测试用例。位置在输入的第一行,三个点在随后的三行。
编码愉快!
因为它需要适合于二维笛卡尔平面,所以代码需要尽可能短。
—
wizzwizz4 2016年
您显然使用的是不精确的结果,但仍然可能导致歧义,我们应该如何处理呢?
—
瑕疵的
@flawr只是假设所有结果都是精确且唯一的。您的程序应适用于小数位数很少的情况,不必担心歧义。当我回到家时,我会清理挑战。
—
Denker
由于公认的答案实际上只是一个图形计算器,因此我将提到TI-Basic(68k版本)中有96字节的解决方案。为了澄清,
—
Fox
solve
(给定三个圆方程)是否使问题平凡?我以为是这样,但是如果您对这样的事情还可以,我会继续进行发布。