Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Судоку, Проблемы при создании 
:(
    Опции темы
sergio11
  Дата 8.3.2011, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



возникла новая проблема. не могуправильно сгенерировать без повторов. следовал этому алгоритму 
http://malover.ucoz.ru/sudoku/
в п.4 сказано перемешать элементы чтоб не повторялись, как это сделать?
вот фукция которая перемешивает
Код

public static void ShuffleList<T>(List<T> list)
        {
            Random rand = new Random();
            for (int i = 0; i < list.Count; i++)
            {
                T tmp = list[i];
                list.RemoveAt(i);
                list.Insert(rand.Next(0, list.Count), tmp);
            }
        }


а вот весь код с помощью которого пытаюсь всё реализовать
Код


            Random rand = new Random();
            List<int> A = new List<int>() { 0, 0, 0 };
            List<int> B = new List<int>() { 0, 0, 0 };
            List<int> C = new List<int>() { 0, 0, 0 };         
            List<int> m = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int k = 0; int[,] mas = new int[9, 9]; 
int[] mas1 = new int[81]; 
int[] mas2 = new int[81];
            ShuffleList(m);

            for (int i = 0; i < 3; i++)
            {
                A[i] = m[k];
                B[i] = m[k + 3];
                C[i] = m[k + 6];
                k++;
            }



            for (int j = 0; j < 9; j++)//0 строка
            {
                mas[0, j] = m[j];
                Console.Write(mas[0, j]);//выыод 0 строки
            }
            k = 0;
            for (int i = 0; i < 3; i++)//1 строка
            {
                mas[1, k] = C[i];
                mas[1, k + 3] = A[i];
                mas[1, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 1строки
                Console.Write(mas[1, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//2 строка
            {
                mas[2, k] = B[i];
                mas[2, k + 3] = C[i];
                mas[2, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 2строки
                Console.Write(mas[2, j]);

            ShuffleList(A);
            ShuffleList(B);
            ShuffleList(C);
            

            k = 0;

            for (int i = 0; i < 3; i++)//3 строка
            {
                mas[3, k] = C[i];
                mas[3, k + 3] = A[i];
                mas[3, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 3строки
                Console.Write(mas[3, j]);
            k = 0;
            for (int i = 0; i < 3; i++)//4 строка
            {
                mas[4, k] = A[i];
                mas[4, k + 3] = B[i];
                mas[4, k + 6] = C[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 4строки
                Console.Write(mas[4, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//5 строка
            {
                mas[5, k] = B[i];
                mas[5, k + 3] = C[i];
                mas[5, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 5строки
                Console.Write(mas[5, j]);
            

            ShuffleList(A);
            ShuffleList(B);
            ShuffleList(C);
            
            k = 0;

            for (int i = 0; i < 3; i++)//6 строка
            {
                mas[6, k] = C[i];
                mas[6, k + 3] = A[i];
                mas[6, k + 6] = B[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 6строки
                Console.Write(mas[6, j]);
            k = 0;
            for (int i = 0; i < 3; i++)//7 строка
            {
                mas[7, k] = A[i];
                mas[7, k + 3] = B[i];
                mas[7, k + 6] = C[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 7строки
                Console.Write(mas[7, j]);

            k = 0;
            for (int i = 0; i < 3; i++)//8 строка
            {
                mas[8, k] = B[i];
                mas[8, k + 3] = C[i];
                mas[8, k + 6] = A[i];
                k++;
            } Console.WriteLine();

            for (int j = 0; j < 9; j++)//вывод 8строки
                Console.Write(mas[8, j]);
            int n = 0;
            for (int i = 0; i < 9; i++)
                for (int j = 0; j < 9; j++)
                {
                    mas1[n] = mas[i, j];
                    mas2[n] = mas[i, j];
                    n++;
                }
            
                n = 0;
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    ((TextBox)c).Text = mas1[n].ToString();
                    n++;
                }
            }

и как можно сделать, чтобы из массива удальть элемент, к примеру под индексом i, а за место элемента оставить пустату.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.