Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2014, 01:07   #1
Ilyard
 
Регистрация: 09.01.2013
Сообщений: 5
По умолчанию Сдвиг строк/столбцов двумерного массива (судоку)

Добрый день.
Прошу совета начинающему:
для разработки игры судоку выбрал вариант когда уже есть готовый "правильный" шаблон заполненных чисел на поле 9Х9.
А для собственно игры уже нужно этот готовый шаблон видоизменить путём смещения строк а потом столбцов массива на радномно сгенерированное число.
Вот "правильный" шаблон:
Код:
int[,] sudoku_field = new int[9, 9] {
{1,2,3,4,5,6,7,8,9},{4,5,6,7,8,9,1,2,3},{7,8,9,1,2,3,4,5,6},
{2,3,4,5,6,7,8,9,1},{5,6,7,8,9,1,2,3,4},{8,9,1,2,3,4,5,6,7},
{3,4,5,6,7,8,9,1,2},{6,7,8,9,1,2,3,4,5},{9,1,2,3,4,5,6,7,8}};
не могу понять как мне смещать строки а потом столбцы этого массива?


____
отформатировал код тегами [CODE]...

Модератор

Последний раз редактировалось Serge_Bliznykov; 17.01.2014 в 08:49.
Ilyard вне форума Ответить с цитированием
Старый 15.01.2014, 08:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

насколько я понимаю, смещать можно только одновременно группами по три строки (три столбца) и только сразу на 3 или на 6 позиций (это требуют правила СУДОКУ).
хотя нет, не обязательно по 3!! Но обязательно в пределах "своего" блока 3X3
А чем не устроил вариант генерации нового, случайного поля? я не спорю, он не такой уж банальный и тривиальный, но и ничего сверх замудрённого, вполне себе реализуемый алгоритм.

Последний раз редактировалось Serge_Bliznykov; 15.01.2014 в 08:53.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.01.2014, 23:26   #3
Ilyard
 
Регистрация: 09.01.2013
Сообщений: 5
По умолчанию

Насколько я понял: что мой массив чисел заполнен так, что если смещать строки или столбцы один за другим, то всё равно в блоках 3*3 будет уникальный набор чисел. Так что по-моему группировка по 3 строки/столбца не нужна.
Вариант с генерацией нового случайно поля я видел - там с "откатом" я если честно не сильно понял, видел как его делают другие, но решил попробовать именно с "готовым" правильным шаблоном, в котором потом рандомно буду удалять ячейки.
Ilyard вне форума Ответить с цитированием
Старый 17.01.2014, 16:53   #4
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Сдвиг(обмен) строк
Код:
private static void ArrayMoveRow(int[,] Arr, int SourceRowId, int TargetRowId)
        {
            int tmpInt;

            // обмен значениями строк
            for (int i = 0; i < 9; i++)
            {
                tmpInt = Arr[TargetRowId, i];
                Arr[TargetRowId, i] = Arr[SourceRowId, i];
                Arr[SourceRowId, i] = tmpInt;
            }
        }
С колонками точно так же практически
simples вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строк и столбцов двумерного массива Павел Шилин Паскаль, Turbo Pascal, PascalABC.NET 1 20.05.2012 21:07
сдвиг двумерного массива Вечный_студент Общие вопросы C/C++ 0 14.05.2012 16:24
Сортировка строк двумерного массива в паскале Zo_0m Помощь студентам 0 13.11.2011 16:43
Сортироука столбцов двумерного массива Гамбит Помощь студентам 10 05.05.2010 19:27
[С++] Сортировка 2ух строк двумерного массива. ReDev1L Помощь студентам 1 19.10.2008 03:45