internal static Line Row(int index, GridLine segment1, GridLine segment2, GridLine segment3) { return(new Line(index, segment1, segment2, segment3) { lineType = LineType.Row }); }
internal static Line Column(int index, GridLine segment1, GridLine segment2, GridLine segment3) { return(new Line(index, segment1, segment2, segment3) { lineType = LineType.Column }); }
internal Grid(Sudoku sudoku, int index) { this.sudoku = sudoku; this.index = index; var elements = Enumerable.Range(0, 9) .Select(item => new Element(index, item)) .ToArray(); var rows = new GridLine[3] { GridLine.Row(this, 0, elements[0], elements[1], elements[2]), GridLine.Row(this, 1, elements[3], elements[4], elements[5]), GridLine.Row(this, 2, elements[6], elements[7], elements[8]) }; this.row1 = rows[0]; this.row2 = rows[1]; this.row3 = rows[2]; this.rows = rows; var columns = new GridLine[3] { GridLine.Column(this, 0, elements[0], elements[3], elements[6]), GridLine.Column(this, 1, elements[1], elements[4], elements[7]), GridLine.Column(this, 2, elements[2], elements[5], elements[8]) }; this.column1 = columns[0]; this.column2 = columns[1]; this.column3 = columns[2]; this.columns = columns; this.elements = elements; }
private Line(int index, GridLine segment1, GridLine segment2, GridLine segment3) { this.index = index; this.segments = new GridLine[3] { segment1, segment2, segment3 }; this.elements = new Element[9] { segment1.Element1, segment1.Element2, segment1.Element3, segment2.Element1, segment2.Element2, segment2.Element3, segment3.Element1, segment3.Element2, segment3.Element3 }; this.segment1 = segment1; this.segment2 = segment2; this.segment3 = segment3; }