问题:
给定笛卡尔平面中的一组非空点,请找到将它们全部包围的最小圆(Wikipedia链接)。
如果点的数量为三个或更少(如果有一个点,则圆的半径为零;如果有两个点,则连接点的线段为圆的直径;如果有),则此问题微不足道。 3个(非共线的)点,如果它们形成一个非钝角三角形,则可以得到一个全部接触它们的圆的方程;如果该三角形是钝角,则可以得到仅接触两个点并包含第三个点的圆的方程)。因此,为了应对这一挑战,积分的数量应大于三。
挑战:
- 输入: 4个或更多非共线点的列表。这些点应具有X和Y坐标;坐标可以是浮点数。为了缓解挑战,任何两个点都不应共享相同的X坐标。
例如:[(0,0), (2,1), (5,3), (-1,-1)]
- 输出:值的元组
(h,k,r)
,使得是包围所有点的最小圆的方程。
规则:
- 您可以选择适合您程序的任何输入法。
- 输出应打印到
STDOUT
函数或由函数返回。 - 首选“普通”,通用语言,但任何esolang都是可以接受的。
- 您可以假定这些点不是共线的。
- 这是代码高尔夫球,因此以字节为单位的最小程序为准。挑战赛发布一周后将选出优胜者。
- 请在回答的第一行中包括您使用的语言和以字节为单位的长度作为标题:
# Language: n bytes
- 请在回答的第一行中包括您使用的语言和以字节为单位的长度作为标题:
测试用例:
- 1:
- 输入:
[(-8,0), (3,1), (-6.2,-8), (3,9.5)]
- 输出:
[-1.6, 0.75, 9.89]
- 输入:
- 2:
- 输入:
[(7.1,-6.9), (-7,-9), (5,10), (-9.5,-8)]
- 输出:
[-1.73, 0.58, 11.58]
- 输入:
- 3:
- 输入:
[(0,0), (1,2), (3,-4), (4,-5), (10,-10)]
- 输出:
[5.5, -4, 7.5]
- 输入:
- 4:
- 输入:
[(6,6), (-6,7), (-7,-6), (6,-8)]
- 输出:
[0, -0.5, 9.60]
- 输入:
打高尔夫球快乐!