Уважаемые форумчане! Представляю на ваш суд свое очередное творение - генератор судоку.
Что такое судоку, я думаю, знают все, а те, кто не в курсе, могут почитать информацию на википедии. Штука эта довольно интересная и развивающая, однако, иногда проблематично найти нормально составленные задания. Под "нормально составленными" я имею в виду такие судоку, в которых размещение цифр в клетках симметрично между собой. И именно эта деталь была одной из главных при реализации этого задания.
Но перейдем ближе к описанию программы. Она позволяет генерировать заданное количество судоку, сразу записывать их в doc-файл, а затем, по желанию, выводить файл на печать на "дефолтный" принтер. Также, при желании, можно сохранять в отдельный doc-файл и "ответы" - т.е. судоку с полностью заполненными клеточками.
Принцип ее функционирования довольно прост. Вначале пользователь должен указать необходимые параметры - количество сгенерированных заданий судоку, их сложность, путь к папке с сохраненными файлами, имя файла с судоку; отметить необходимость сохранять файл с ответами, и быструю печать файла с заданиями. После этого, можно запускать программу на генерацию.
При этом, в начале формируется числовой двумерный массив данных, которые соответствуют правилам судоку - цифры не должны повторятся по горизонтали, вертикали, и внутри квадратиков. По ходу формирования массива, идет проверка этоих условий до тех пор, пока массив не будет полностью сформирован. Естественно, что строится этот массив при помощи постоянного "тасования" цифр. Затем, формируется "маска" нулей - т.е. закрытых, удаленных ячеек. Это происходит по принципу рандомного построения двумерного массива с нулей и единиц. Затем, берутся данные первых пяти квадратиков (если считать слева направо, и сверху вниз), и исходя из них формируются симметричные по отношению к ним остальные клеточки. Таким образом, получается симметричная сетка из нулей и единиц. После этого, происходит сравнение сгенерированного судоку с этой "маской", и на месте нулей в исходный, сгенерированный массив данных, также записываются нули (пробелы).
После этого, все это дело записывается в файл, и дальше все повторяется до тех пор, пока не будет сгенерированно необходимое количество судоку.
Такое довольно громоздкое отображение выходного массива (двумерный массив кластеров, которые внутри имеют двумерный массив строк) необходим для визуального разделения большого квадрата на маленькие, потому как в обычном, двумерном массиве, все цифры сливаются в один квадрат. Ну, а массив строк необходим для того, чтобы вместо нулей не отображать вообще ничего - т.е. пробелы.
Для удобства и отслеживания количества сгенерированных судоку прикручен прогресс бар - он полезен на случай большого количества необходимых судоку.
Для работы программы необходимо наличие Report Generation Toolkit.
Вот, наверное, и все.
Буду рад прислушаться к любой критике, интересно узнать ваше мнение по поводу этой программы.
Надеюсь, что кому-то она также пригодится, как и мне - раньше мне приходилось скриншотить картинки судоку, и вручную вставлять их в ворд. Теперь все намного проще.
Генератор судоку.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Генератор судоку.
- Вложения
-
- Sudoku LV-2010.rar
- (208.47 КБ) 420 скачиваний
-
- Sudoku LV-2012.rar
- (321.5 КБ) 496 скачиваний
Мы делили апельсин - много наших полегло...
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Генератор судоку.
Спасибо, интересная реализация в LabVIEW такого ещё не было)
Думаю эта тема достойна главной
Думаю эта тема достойна главной
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Oleg B.
- leader
- Сообщения: 674
- Зарегистрирован: 25 сен 2011, 11:30
- Награды: 2
- Версия LabVIEW: 5 .. 2021
- Откуда: Israel
- Контактная информация:
Re: Генератор судоку.
1.После запуска программы нажатие кнопки "Generate" срабатывает только один раз.Буду рад прислушаться к любой критике, интересно узнать ваше мнение по поводу этой программы.
Чтобы запустить "Generate" еще раз, нужно открывать и закрывать "Setting",при этом ни чего в них не меняя.
2. Автор не знает, как собрать массив в цикле (Automatic Indexing), поэтому сборка массивов выглядит довольно изощренно.
3. Автор не знает функции Initialize Array - инициализация массива сделана в двойном цикле с двумя шифт-регистрами.
4.Наиболее корявые, ИМХО, места исправил.
- Было!!!в LabVIEW такого ещё не было
У меня есть программа для полуавтоматического решения Sudoku
veni, vidi, phallomorphi
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Генератор судоку.
Олег, при всём моём уважении, но её не было у нас в разделе "Проекты", так же в открытом доступе в интернете её нет, по этому автор этого проекта, проанализировав источники может с уверенностью утверждать, что до этого в LabVIEW этой программы не было. У кого что лежит в загашнике или пылится на полке никто знать не может.Oleg B. писал(а): Было!!![/size]
У меня есть программа для полуавтоматического решения Sudoku
И ещё одна просьба - при комментировании чужих разработок, пожалуйста придерживайтесь конструктивных и безболезненно воспринимаемых автором форм ведения диалогов. Просьба избегать таких фразеологизмов как: "Автор не знает... ", "Корявые места" etc и заменять их на подходящие по значению аналоги типа: "Воспользуйтесь тем-то...", "Спорные места...".
Иначе с такой критикой никто ничего у нас выкладывать не будет.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Генератор судоку.
Павел, спасибо Вам за поддержку!
Перефразируя кота Матроскина можно сказать, что "Совместный труд для моей пользы облагораживает программу"
Согласен, не заметил как-то такого косякаOleg B. писал(а): 1.После запуска программы нажатие кнопки "Generate" срабатывает только один раз.
Обидно - я как раз знаю за эти функции, но просто ими не воспользовался...Oleg B. писал(а): 2. Автор не знает, как собрать массив в цикле (Automatic Indexing), поэтому сборка массивов выглядит довольно изощренно.
3. Автор не знает функции Initialize Array - инициализация массива сделана в двойном цикле с двумя шифт-регистрами.
А вот за это - отдельное спасибо! Теперь внешний вид стал намного приятней . Я думал как-то использовать кастомные контролы, но так ни до чего и не додумался.Oleg B. писал(а): 4.Наиболее корявые, ИМХО, места исправил.
Перефразируя кота Матроскина можно сказать, что "Совместный труд для моей пользы облагораживает программу"
Мы делили апельсин - много наших полегло...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 348 Просмотры
-
Последнее сообщение IvanLis
-
- 0 Ответы
- 98 Просмотры
-
Последнее сообщение tamperplay