/// <summary> /// 左右対称か判定します。 /// </summary> /// <returns>左右対称なら真、そうでなければ偽が返ってきます。</returns> public static bool HorizontallySymmetricalCheck(this Cell[,] field) { for (int x = 0; x < field.Width() / 2; x++) { for (int y = 0; y < field.Height(); y++) { if (field[x, y].Point != field[(field.Width() - 1) - x, 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);