Пример #1
0
            public void HoanViNgauNhienTronglocal(int pos, hoanvi hv)
            {
                //hàm này sẽ hoán vị cột/dòng ngẫu nhiên với 1 cột/dòng khác trong phạm vi local( 9 ô vuông nhỏ )
                int minPos, maxPos; // xác định khoảng hoán vị

                minPos = (pos / 3) * 3;
                maxPos = (pos / 3) * 3 + 2;

                for (int i = minPos; i <= maxPos; i++)
                {
                    if (i != pos)
                    {
                        int C = new Random().Next(0, 100);
                        if (new Random().Next(0, 100) % 2 == 0)
                        {
                            //nếu số đầu tiên trong 2 số còn lại được chọn thì sẽ hoán vị vs pos và return
                            HoanVi(hv, pos, i);
                            return;
                        }
                        else
                        { //ngược lại, nếu vị trí đầu k đk chọn tức là vị trí còn lại sẽ hoán vị vs pos
                            for (int j = minPos; j < maxPos; j++)
                            {
                                if (j != i && j != pos)
                                {
                                    HoanVi(hv, pos, j);
                                    return;
                                }
                            }
                        }
                    }
                }
            }
Пример #2
0
 public void HoanVi(hoanvi dong_hay_cot, int obj1, int obj2)
 {
     int[] swap = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
     if (dong_hay_cot == hoanvi.dong)
     {
         //dong
         for (int i = 0; i < 9; i++)
         {
             swap[i]       = Data[obj1, i];
             Data[obj1, i] = Data[obj2, i];
             Data[obj2, i] = swap[i];
         }
     }
     else
     {
         //cot
         for (int i = 0; i < 9; i++)
         {
             swap[i]       = Data[i, obj1];
             Data[i, obj1] = Data[i, obj2];
             Data[i, obj2] = swap[i];
         }
     }
 }