/// <summary>
 /// 上下対称か判定します。
 /// </summary>
 /// <returns>上下対称なら真、そうでなければ偽が返ってきます。</returns>
 public static bool VerticallySymmetricalCheck(this Cell[,] field)
 {
     for (int x = 0; x < field.Width(); x++)
     {
         for (int y = 0; y < field.Height() / 2; y++)
         {
             if (field[x, y].Point != field[x, (field.Height() - 1) - y].Point)
             {
                 return(false);
             }
         }
     }
     return(true);
 }
 /// <summary>
 /// フィールド上で上下左右反転したときのマスの座標を取得します。
 /// </summary>
 /// <param name="field">対称となるフィールド</param>
 /// <param name="point">対称となるマス</param>
 /// <returns></returns>
 public static Coordinate FlipHorizontalAndVertical(this Cell[,] field, Coordinate point) => new Coordinate(field.Width() - 1 - point.X, field.Height() - 1 - point.Y);
 /// <summary>
 /// フィールド上で上下反転したときのマスの座標を取得します。
 /// </summary>
 /// <param name="field">対象となるフィールド</param>
 /// <param name="point">対象となるマス</param>
 /// <returns></returns>
 public static Coordinate FlipVertical(this Cell[,] field, Coordinate point) => new Coordinate(point.X, field.Height() - 1 - point.Y);