ある三角形の頂点のうち、最後の頂点を求める方法

今日は小ネタです。

三角形ABCの各頂点の座標が、a, b, c であるものとします。
 この三角形ABCのうち、外から渡した座標 d, e のいずれでもない、最後の頂点を求めて下さい。ただし d, e は、必ず a, b, c のうちのいずれかと一致し、また d≠e であるものとします。

答え:a + b + c - d - e

 案外、思いつかないものです。

 ちなみにこの方法は、a〜e が頂点座標ではなく、頂点配列のインデックスの場合にも利用できます。

 似たようなテクニックに、「3つの数字のうち、真ん中の値を求める」のがあります。

template <class T>
T middle(const T& a, const T& b, const T& c)
{
  return a + b + c - std::min(a, std::min(b, c)) - std::max(a, std::max(b, c));
}