给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true 。
回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。
示例 1:
输入:points = [[1,1],[2,3],[3,2]]
输出:true
示例 2:
输入:points = [[1,1],[2,2],[3,3]]
输出:false
提示:
points.length == 3
points[i].length == 2
0 <= xi, yi <= 100
require "matrix"
def is_boomerang(points)
# 3个点 -> 2个向量 -> 若2个向量线性无关,则其矩阵的秩为2 -> 行列式不为零
ξ1 = [(points[0][0] - points[1][0]),(points[0][1] - points[1][1])]
ξ2 = [(points[0][0] - points[2][0]),(points[0][1] - points[2][1])]
array = Matrix[ξ1,ξ2]
return array.determinant != 0
end
下面顺便再给另一种解法
def is_boomerang(points)
return !((points[0][0] == points[1][0])&&(points[0][1] == points[1][1])||((points[2][0] - points[0][0])*(points[2][1] - points[1][1])) == ((points[2][0] - points[1][0])*(points[2][1] - points[0][1])))
end