Exemplo n.º 1
0
        /// <summary>
        /// Изменение таблицы судоку по данным
        /// </summary>
        /// <param name="editCellSudoku"></param>
        public void ResetTableSudoku(EditCellSudoku editCellSudoku)
        {
            DataGridSudoku.BeginInit();
            if (editCellSudoku != null)
            {
                ((ItemCellSudoku)dataTableSudoku.Rows[editCellSudoku.Row][editCellSudoku.Column]).ResetItem(editCellSudoku.Simbol);

                for (int row = 0; row < dataTableSudoku.Rows.Count; row++)
                {
                    for (int column = 0; column < dataTableSudoku.Columns.Count; column++)
                    {
                        var item = ((ItemCellSudoku)dataTableSudoku.Rows[row][column]);
                    }
                }

                List <char> AllSimbols = new List <char>();
                for (char ch = '1'; ch < '1' + 9; ch++)
                {
                    AllSimbols.Add(ch);
                }

                foreach (var listItemSudoku in ListItemSudokus)
                {
                    foreach (var simbol in AllSimbols)
                    {
                        ListItemSudoku    listItemSudokus = new ListItemSudoku();
                        List <ItemSudoku> itemSudokus     = new List <ItemSudoku>();
                        foreach (var itemSudoku in listItemSudoku.ItemSudokus)
                        {
                            var item = itemSudoku;
                            if (item.ItemCellSudoku.Can.Contains(simbol))
                            {
                                itemSudokus.Add(item);
                            }
                        }

                        listItemSudokus.ItemSudokus = itemSudokus;
                        var k = ListItemSudokus.Where(x => x.Contains(listItemSudokus)).ToList();

                        if (itemSudokus != null && k.Count > 1 && itemSudokus.Count > 0)
                        {
                            //Которые надо изменить
                            var kk = k.Select(x => x.ItemSudokus.Where(y => !itemSudokus.Contains(y)).ToList()).ToList();
                            foreach (var item1 in kk)
                            {
                                foreach (var item2 in item1)
                                {
                                    item2.ItemCellSudoku.Can.Remove(simbol);
                                }
                            }
                        }
                    }
                }
            }



            DataGridSudoku.EndInit();
        }
Exemplo n.º 2
0
        public bool Contains(object obj)
        {

            if (obj is ListItemSudoku)
            {
                ListItemSudoku listItemSudoku = (ListItemSudoku)obj;
                if (ItemSudokus.Count < listItemSudoku.ItemSudokus.Count)
                {
                    return false;
                }
                foreach (var itemSudoku in listItemSudoku.ItemSudokus)
                {
                    if (!ItemSudokus.Contains(itemSudoku))
                    {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
Exemplo n.º 3
0
        public override bool Equals(object obj)
        {

            if (obj is ListItemSudoku)
            {
                ListItemSudoku listItemSudoku = (ListItemSudoku)obj;
                if (ItemSudokus.Count!= listItemSudoku.ItemSudokus.Count)
                {
                    return false;
                }
                foreach (var itemSudoku in ItemSudokus)
                {
                    if(!listItemSudoku.ItemSudokus.Contains(itemSudoku))
                    {
                        return false;
                    }
                }
                return true;
            }
            return false;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Первоначальное создание таблицы
        /// </summary>
        private void NewTable()
        {
            int numSudoku = 9;


            for (int i = 0; i < numSudoku; i++)
            {
                dataTableSudoku.Columns.Add($"{i}", typeof(object));
            }
            for (int i = 0; i < numSudoku; i++)
            {
                var newRow = dataTableSudoku.NewRow();
                for (int j = 0; j < numSudoku; j++)
                {
                    //TODO: это объединить
                    newRow[j] = new ItemCellSudoku(' ');
                }
                dataTableSudoku.Rows.Add(newRow);
            }

            for (int i = 0; i < numSudoku; i++)
            {
                ListItemSudoku listItemSudokuRow    = new ListItemSudoku();
                ListItemSudoku listItemSudokuColumn = new ListItemSudoku();
                ListItemSudoku listItemTable        = new ListItemSudoku();

                for (int j = 0; j < numSudoku; j++)
                {
                    int row = i;
                    int col = j;
                    listItemSudokuRow.ItemSudokus.Add(new ItemSudoku(dataTableSudoku, row, col));
                    row = j;
                    col = i;
                    listItemSudokuColumn.ItemSudokus.Add(new ItemSudoku(dataTableSudoku, row, col));
                    col = (i / 3) * 3 + j / 3;
                    row = (i % 3) * 3 + j % 3;
                    listItemTable.ItemSudokus.Add(new ItemSudoku(dataTableSudoku, col, row));
                }
                ListItemSudokus.Add(listItemSudokuRow);
                ListItemSudokus.Add(listItemSudokuColumn);
                ListItemSudokus.Add(listItemTable);
            }

            for (int i = 0; i < numSudoku; i++)
            {
                for (int j = 0; j < numSudoku; j++)
                {
                    var z = ListItemSudokus.Where(x => x.FindRowColumn(i, j)).ToList();
                    ((ItemCellSudoku)dataTableSudoku.Rows[i][j]).ListItemSudokus = z;
                }
            }



            DataGridSudoku.ItemsSource           = dataTableSudoku.DefaultView;
            DataGridSudoku.CanUserAddRows        = false;
            DataGridSudoku.CanUserResizeColumns  = false;
            DataGridSudoku.CanUserDeleteRows     = false;
            DataGridSudoku.CanUserResizeRows     = false;
            DataGridSudoku.CanUserReorderColumns = false;
            DataGridSudoku.CanUserSortColumns    = false;
        }