Как сделать судоку в excel

Как сделать судоку в excel?

Программа для решения судоку проста в использовании. Если на Вашем компьютере имеется установленное приложение Microsoft Office Excel, просто откройте с его помощью файл, скаченный с нашего сайта, заполните то, что у Вас уже получилось и нажмите кнопку «Разгадать». Программа приступит к решению задачки, за чем Вы сможете наблюдать.

Если программа вернет ошибку, то вероятнее всего Вы допустили ошибку в ведении данных.

В случаях решения сложных судоку программа приступает к угадыванию. В момент очередного угадывания уже разгаданные числа могут стереться. Это значит, что текущее угадывание прошло неверно, и программа приступит к новому варианту решения.

Процесс угадывания редко превышает по времени 1 минуту, но может превышать этот показатель. Чтобы остановить работу программы зажмите клавишу «Esc» на клавиатуре.

Скачать Программу для решения судоку в Excel (sudoku.rar)

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.

У Вас недостаточно прав для комментирования.

Судоку – математическая игра-головоломка.

Классический вариант японского судоку – это квадрат 9 * 9 клеток, в котором необходимо расставить цифры от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом выделенном квадрате 3 * 3 все цифры были различны.

О том, как решать судоку можно прочитать, например, здесь.

Здесь мы рассмотрим пример использования некоторых функций Excel, помогающих решить судоку.

— возвращает значение элемента таблицы или массива, заданного номером строки и номером столбца.

  • если используется один аргумент, номер_строки или номер_столбца, то функция вернет массив значений (строку или столбец соответственно)
  • если используются оба аргумента номер_строки и номер_столбца, то функция возвращает значение, находящееся в ячейке на пересечении указанных строки и столбца.

Схематично можно представить так

СЧЁТЕСЛИ(диапазон;критерий) — подсчитывает количество ячеек внутри диапазона, удовлетворяющих заданному критерию.

Разместим исходные данные в ячейках «A1 : I9»

Теперь мы хотим, зная номер строки и столбца какой-то ячейки нашего судоку, определить какие в этой ячейке могут быть числа.

Для начала присвоим диапазону «A1 : I9» имя «СУДОКУ».

Для примера определим количество вхождений числа 2 в строку 6

Работает эта формула таким образом:

  1. ИНДЕКС(Судоку;5;) представляет из себя строку номер 6 нашей таблицы
  2. Функция СЧЕТЕСЛИ() считает количество элементов этой строки, которые равны 2

Чтобы проверить присутствие числа 2 в столбце 3, к примеру, запишем

А чтобы проверить и строку и столбец просто сложим два выражения

Об использовании функции СМЕЩ() читайте в следующей заметке. Похожие по тематике посты — еще почитать:

Судоку Подробности Создано 31 Март 2011

Пример решения головоломки «Судоку 9х9» без программирования. К экономике отношения не имеет, зато отлично показывает возможности Excel в задачах комбинаторики.

Подробно описать использованные в примере формулы не представляется возможным (желающие могут открыть «подвал» с расчетами). Алгоритм примерно такой же как вы используете при решении вручную. Сначала отсекаются заранее невозможные варианты, затем перебором подставляются оставшиеся цифры с контролем каждого шага.

Открывайте файл только в новом окне приложения Excel — это позволит автоматически установить параметры итераций.

Благодарность за идею Тимуру Чулинину. Он сказал, что видел пример на иносайте. Даже ссылку дал, но я ее, честное слово, не открывал.

Смотри также » Перекрестный расчет себестоимости

При разработке экономических моделей одной из самых интересных задач является решение проблемы перекрестных связей между формулами….

У продвинутых пользователей Excel очень популярен вопрос о возможности объединения диапазона ячеек, содержащих текст, в одну строку при…

» Распределение начислений по платежам

При ведении финансового учета в электронных таблицах обычно ограничиваются, так называемым «котловым» методом расчета задолженности…

» Календарный план выпуска изделий

Одной из самых сложных задач экономического менеджмента является составление календарного плана выпуска продукции в условиях…

» Поиск кратчайшего маршрута

При решении сложных алгоритмических задач с использование электронных таблиц иногда приходится сталкиваться с ошибками из-за…

Источник:
http://word-office.ru/kak-sdelat-sudoku-v-excel.html

Sudoku на С#, VBA Excel

C#, VBA Excel: Программу решения СУДОКУ бесплатно скачать на компьютер

1. Судоку не так проста…

Судоку – это известная головоломка, появившаяся в Америке и ставшая культовой в Японии. Количество поклонников этого магического квадрата постоянно увеличивается. Появляются и все новые варианты: 5х5, 6х6, 7х7, 16х16 и т.д. Интеллект, логика, внимательность – помогают нам справиться с заданиями и получать заслуженное удовольствие.

Из Википедии мы знаем, что долгое время оставался открытым вопрос о минимальном количестве открытых клеток, необходимых для однозначного решения судоку. Например, не было известно, существует ли однозначно решаемая судоку, в которой известны (открыты) всего 16 клеток. Оказывается, для решения этого вопроса, потребовалось использовать проект распределённых вычисле́ний…

Технология distributed computing, grid computing, volunteer computing или распределённых вычисле́ний — способ решения трудоёмких вычислительных задач с использованием двух и более компьютеров, объединённых в сеть. Распределённые вычисления являются частным случаем параллельных вычислений, то есть одновременного решения различных частей одной вычислительной задачи несколькими процессорами одного или нескольких компьютеров. Поэтому необходимо, чтобы решаемая задача была сегментирована, то есть разделена на подзадачи, которые могут вычисляться параллельно.

С появлением и бурным развитием интернета всё большую популярность стала получать идея добровольного использования для распределённых вычислений компьютеров простых пользователей (волонтеров), соединённых через интернет. При этом для распределенных вычислений приходится также учитывать возможное различие в вычислительных ресурсах, которые будут доступны для расчёта различных подзадач. Более того, не всякую задачу можно разделить на подзадачи, которые можно решать параллельно.

Оказывается, только в 2012 году проект распределённых вычислений на платформе BOINC убедительно доказал, что однозначно решаемых судоку с 16 подсказками не существует…

2. VBA Excel для решения кроссворда Судоку

Я не ломал себе голову вопросом однозначности решений в зависимости от количества подсказок.
Так, из спортивного интереса, я когда-то написал программку для решения этой японской головоломки на VBA (Excel).
Целью было — просто проверять, имеется ли решение для данного варианта конкретной Судоку.
Поэтому и решал методом простого перебора с проверкой истинности условий по всем 18 линиям и 9 квадратикам.

Если Вы вписали число в клетку, то при старте (кнопка «Решить») шрифт в этой ячейке станет красным и уже ни программа, ни кнопка «Очистить» изменять ее не будут. Такое право (изменять или очищать красную ячейку) предоставляется только пользователю…
Алгоритм этот, конечно, работает не рационально и долго.
Почти целую минуту…
Хотя для человека это недостижимый результат…

Кого интересует код на VBA (Excel)
решение сплошным перебором – скачивайте бесплатно.

3. Интеллектуальное решение Судоку – программа на C# (Visual Studio 2010)

От жалости к компьютеру (его не рациональному труду) и зародилась мысль, решить задачу не методом сплошного перебора, а логично… наиболее коротким путем.

Идея: присваивать одно из альтернативных значений клетке только в том случае, если по методу исключений уже невозможно определить значение ни для одной из ячеек поля.

Минимум классов предметной области:

  • Доступность
  • Клетка
  • Регион
  • ход

Понятно, что и каждая клетка, и каждый регион, будь то строка, столбец или квадратик, в конкретный момент решения (на определенном ходе) обладают определенной доступностью – набором цифр, которые еще не использовались в этом регионе. Доступность может выступать предком для классов «клетка» и «регион».

А ход — представляет собой объект, который в начальный период присваивает одной единственной клетке альтернативное значение (именно одна единственная клетка получает инициализацию на очередном ходе, некое случайно-очередное значение), а затем выполняет цепочку необратимых (логически обоснованных) изменений, которые повлекло за собой это первое присвоение (по методу исключений).

Сколько клеток получат свое значение на одном ходе неизвестно – это дело конкретного случая.
Сколько будет ходов всего – тоже дело конкретного случая.
Но если алгоритм на определенном ходе заходит в тупик, то производится «откат» , то есть очистка всех ячеек измененных на этом ходу. Далее проверяется возможность выбора другого числа (поиск случайно-очередного значения) для этой клетки и/или откат еще одного хода.
Конечно, предметную область можно развивать и дальше… Добавлять новые методы, позволяющие еще более тщательно анализировать текущее состояние поля, перед тем как делать ход… Это, конечно, еще более сократит время решения… но для этого надо бы иметь соперника… С кем бы имело смысл соревноваться… А так, с точки зрения пользователя, программа работает практически мгновенно. При условии, что Судоку реальное (т.е. не менее 17 клеток на начальный момент заполнено)…

4. Судоку (Sudoku) бесплатно скачать программу на компьютер

Можно использовать программу и для составления судоку
Набрасываете на поле несколько чисел, заставляете программу решить и начинаете некоторые клетки очищать…
Когда будете очищать очередную клетку, просто проверьте, что решение является единственным. Ведь по условию, правильная судоку должна иметь единственное решение… Иначе очистите другую…

5. Удобно использовать Судоку при онлайн (online) играх на время

Конечно, если Ваша цель – доказать себе, т.е. потренировать собственную способность логично и быстро мыслить, то ехе-шник Вам не нужен…
Но в жизни встречаются моменты, когда инструменты, многократно увеличивающие возможности человека, просто необходимы… Допустим, рассмотреть что-то очень далекое без бинокля не получается, а с биноклем – плевое дело. Так и эту программу следует рассматривать как инструмент, который полезен лишь в определенных случаях…

Читайте также  Диаграммы Excel

Какие бы сложные варианты головоломок Судоку (Sudoku) не встретились, вы можете не сомневаться, что решение будет найдено. И даже не одно, а все имеющиеся для данной комбинации подсказок…
Можете проверять себя…
Можете поражать противников скоростью просчета вариантов.

Можно достаточно легко переделать программу на составление (генерацию) судоку.

Источник:
http://orenstudent.ru/Sudoku2.htm

Лист Excel

Ход решения

1. Заполняем ячейки.

2. При нажатии на «Шаг» программа заполнит примечания клеток и раскрасит клетки с однозначным решением на этом шаге.

Если выставить флажки программа расставит цифры и вообще может решить судоку за несколько шагов.

Текст программы

Private Sub CheckBox3_Click()

‘для решения судоку с автоматическим

‘продолжением шагов и заполнения

If CheckBox3.Value = True Then

Private Sub CommandButton1_Click()

If CheckBox3.Value = True Then

Public текст As String * 9

заполнено = 0 ‘для определения окончания заполнения

авто_шаг = 0 ‘для выхода из цикла, если за 10 шагов судоку не заполнено

авто_шаг = авто_шаг + 1

If Cells(s, k) >= 1 Then

заполнено = заполнено + 1

Call В_строке(s) ‘замена цифры на «_» если такая есть в строке

Call В_колонке(k) ‘замена цифры на «_» если такая есть в колонке

Call В_квадрате(s, k) ‘замена цифры на «_» если такая есть в блоке 3х3

Call Единственная(s, k) ‘если для клетки это единственный вариант — заполнить

Call Примечание(s, k) ‘изменение текста примечания

Call Место ‘этой цифры нет в вариантах других клеток строка, колонка, квадрат)

If Sheets(1).CheckBox3.Value = False Then

заполнено = 81 ‘ для предотвращения АвтоШага

заполнено = 81 ‘ для предотвращения зацикливания

Public Sub Примечание ( строка , колонка )

If текст = «_________» Then

If Cells( строка , колонка ).Comment Is Nothing Then

‘создание примечания и запись текста

Cells( строка , колонка ).Comment.Visible = False

Cells( строка , колонка ).Comment.Text Text:= текст

Cells( строка , колонка ).Comment.Shape.ScaleWidth 0.5, msoFalse, msoScaleFromTopLeft

Cells( строка , колонка ).Comment.Shape.ScaleHeight 0.2, msoFalse, msoScaleFromTopLeft

Else ‘изменение текста примечания

Cells(строка, колонка).Comment.Text Text:=текст

Public Sub В_строке(строка)

If Cells( строка , k) >= 1 Then

‘по цифре в клетке опредеяем место символа в примечании для замены

Mid(текст, Cells(строка, k), 1) = «_»

Public Sub В_колонке(колонка)

If Cells(s, колонка ) >= 1 Then

‘по цифре в клетке опредеяем место символа в примечании для замены

Mid( текст , Cells(s, колонка ), 1) = «_»

Public Sub В_квадрате(строка, колонка)

строка_0 = строка — (строка + 1) Mod 3

колонка_0 = колонка — (колонка + 1) Mod 3

For s = строка _0 To строка _0 + 2

For k = колонка_0 To колонка_0 + 2

If Cells(s, k) >= 1 Then

‘по цифре в клетке опредеяем место символа в примечании для замены

Mid( текст , Cells(s, k), 1) = «_»

Public Sub Единственная (s, k)

цифр = 0 ‘для посчета количества цифр в примечании

If Mid( текст , i, 1) <> «_» Then

If Sheets(1).CheckBox1.Value = True Then

Cells(s, k).Value = t

Call Выделить (5296274) ‘ зелёный

If Cells(s, k).Comment Is Nothing Then

If Selection.Interior.Color = 5296274 Then

Одна _ из = Cells(s, k).Comment.Text

For цифра = 1 To 9

Call Одна_в_строке(s, k, Mid(Одна_из, цифра, 1), цифра)

Call Одна_в_колонке(s, k, Mid(Одна_из, цифра, 1), цифра)

Call Одна_в_квадрате(s, k, Mid(Одна_из, цифра, 1), цифра)

Public Sub Выделить (Color_)

.Color = Color_ ‘65535 или 5296274

Источник:
http://yuriy-smirnov.ucoz.com/load/excel/knigi_exel/excel_pomogaet_reshit_sudoku/6-1-0-9

Как сделать судоку в excel?

Судоку в Excel как способ повторения и закрепления встроенных функций

В курсе информатики средней школы (УМК Угриновича Н.Д.) зачастую сложные темы лучше усваивается учениками с помощью игровых методов

В теме “Кодирование и обработка числовой информации” есть подтема “Электронные таблицы”, в которой ученики 8 и 11 классов (УМК Угриновича Н.Д.) изучают сложный раздел “Встроенные функции Excel”. Для того чтобы упростить подачу такого непростого материала и повысить мотивацию учащихся, я использую судоку.

Судоку – математическая игра-головоломка, известная в России довольно давно под названием “Магический квадрат”.

Классический вариант японского судоку – это квадрат 9х9 клеток, в котором необходимо расставить цифры от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждом выделенном квадрате 3х3 все цифры были различны.

Я предлагаю учащимся сделать проверку судоку в Excel, чтобы повторить некоторые встроенные функции, а также понятие диапазона ячеек.

Нам потребуется знание одной математической функции: =СУММ(ячейка1;я чейка2)

и двух логических функций, совмещенных в одну сложную: =ЕСЛИ(И(ячейка1=45; ячейка2=45); “молодец!”; “попробуй еще!”)

Теперь можно начать писать формулы для проверки правильности решения судоку. Например, в 11 строке мы напишем все формулы для проверки строк квадрата судоку. Итак, в ячейке А11 будет находиться формула =СУММ(A1:I1), в ячейке В11 будет находиться формула =СУММ(A2:I2) и так далее аналогично до ячейки I11, в которой будет находиться формула =СУММ(A9:I9). Теперь в 12 строке проверим все столбцы, также используя диапазон ячеек. В ячейке А12 будет находиться формула =СУММ(A1:А9), в ячейке В12 будет находиться формула =СУММ(В1:В9) и так далее аналогично до ячейки I12, в которой будет находиться формула =СУММ(I1:I9).

Теперь необходимо проверить все выделенные квадраты 3х3. Следует напомнить, что для такого диапазона нужно указать адреса левой верхней и правой нижней ячеек.

То есть в ячейке А13 будет находиться формула: =СУММ(A1:С3), в ячейке В13 будет находиться формула: =СУММ(D1:F3) и т.д. И, наконец, в ячейке I13 будет находиться формула: =СУММ(G7:I9).

Так как известно, что сумма чисел от 1 до 9 равна 45, то, соответственно в диапазоне А13:I13 все ячейки должны быть равны 45, если судоку решено верно.

Теперь приступим к анализу полученных результатов. Для этого в ячейке К1 запишем следующую формулу:

=ЕСЛИ(И(A11=45; B11=45; C11=45; D11=45; E11=45; F11=45; G11=45; H11=45; I11=45; A12=45; B12=45; C12=45; D12=45; E12=45; F12=45; G12=45; H12=45; I12=45; A13=45; B13=45; C13=45; D13=45; E13=45; F13=45; G13=45; H13=45; I13=45); “МОЛОДЕЦ!”;”Попробуй еще!”).

Изначально функция ЕСЛИ выглядит так:

=ЕСЛИ(условие; если верно; если не верно).

Мы же сделали сложное условие с логической функцией И, чтобы условие было верным только в случае, если все 27 ячеек равны 45.

Классический вариант судоку может иметь также дополнительные условия, которые целесообразно дать в качестве самостоятельной работы или дополнительного задания.

Классический вариант + дополнительное условие: по двум (главным) диагоналям все числа также должны быть различны. Для этого нам потребуется ввести к уже имеющимся еще две формулы примерно такого вида:

В качестве домашнего задания можно задать так называемое судоку “область”, где надо расставить цифры от 1 до 9 так, чтобы в каждой строке, в каждом столбце и в каждой выделенной области из 9 клеток все цифры были различны. Можно просто раздать рисунки и попросить написать к ним формулы, даже не используя компьютер.

Заполненные справа судоку служат для того, чтоб учитель мог проверить правильность написания формулы, просто введя набор цифр в ячейки Excel. (Приложение)

Нетрадиционный подход к изучению, повторению, закреплению и контролю такой довольно сложной темы, как “Встроенные функции в Excel”, полностью оправдывает себя, потому что ученик с большей мотивацией выполняет новое задние, чем повторяет уже привычное. И хотя при выполнении данного задания от ученика не требуется разгадать судоку, а только сделать форму для проверки, дети увлекаются и стараются усложнить себе задачу, еще и самостоятельно заполнив клеточки цифрами. Именно для таких пытливых учеников в правых рисунках судоку исходные ячейки выделены полужирным шрифтом.

Мои ученики так увлекаются судоку, что принимают участие в чемпионате СНГ по судоку среди школьников, который проводит газета “Информатика”, издательство “Первое сентября”.

Как сделать судоку в excel?

77314 просмотра

9 ответа

7130 Репутация автора

Как создать судоку с уникальным решением? Я думал, что нужно инициализировать случайную доску, а затем удалить некоторые числа. Но мой вопрос: как мне сохранить уникальность решения?

1 плюс

11 Репутация автора

Нелегко дать общее решение. Вам нужно знать несколько вещей, чтобы генерировать определенный вид судоку . например, вы не можете построить судоку с более чем девятью пустыми группами из 9 чисел (строки, блоки 3х3 или столбцы). Считается, что минимальные заданные числа (то есть «подсказки») в судоку с одним решением составляют 17, но позиции чисел для этого судоку очень специфичны, если я не ошибаюсь. Среднее число подсказок для Судоку составляет около 26, и я не уверен, но если вы выйдете из числа заполненной сетки до 26 и оставите их симметричным образом, у вас может быть действующее Судоку. С другой стороны, вы можете просто случайным образом выходить из чисел из завершенных сеток и проверять их с помощью CHECKER или других инструментов, пока не появится OK.

Читайте также  Как быстро посчитать итоги в таблице?

Автор: Daniel Размещён: 03.08.2011 10:14

16 плюса

12799 Репутация автора

Вы можете обмануть. Начните с существующей доски Судоку, которую можно решить, затем возитесь с ней.

Вы можете поменять любой ряд из трех блоков 3х3 на любой другой ряд. Вы можете поменять любой столбец из трех блоков 3х3 на другой столбец. Внутри каждой строки блока или столбца блока вы можете поменять отдельные строки и отдельные столбцы. Наконец, вы можете переставлять числа, чтобы в заполненных позициях были разные числа, если перестановка постоянна по всей доске.

Ни одно из этих изменений не сделает разрешимую плату неразрешимой.

Автор: rossum Размещён: 03.08.2011 11:29

29 плюса

34935 Репутация автора

  1. Найти все решения с эффективным алгоритмом обратного отслеживания.
  2. Если есть только одно решение, все готово. В противном случае, если у вас есть более одного решения, найдите положение, в котором большинство решений отличаются. Добавьте число в этой позиции.
  3. Перейти к 1.

Я сомневаюсь, что вы можете найти решение, которое было бы намного быстрее, чем это.

Автор: TMS Размещён: 08.08.2011 03:11

48 плюса

17059 Репутация автора

Вот как это делает моя собственная программа SuDoKu:

Начните с полной, действительной доски (заполнена 81 номерами).

Составьте список всех 81 позиций ячеек и перемешайте его случайным образом.

Пока список не пуст, возьмите следующую позицию из списка и удалите номер из связанной ячейки.

Проверьте уникальность, используя быстрый решатель обратного отслеживания. Мой решатель — теоретически — способен подсчитать все решения, но для проверки уникальности он немедленно остановится, когда найдет более одного решения.

Если у текущей доски есть только одно решение, перейдите к шагу 3) и повторите.

Если текущая доска имеет более одного решения, отмените последнее удаление (шаг 3) и продолжите шаг 3 со следующей позиции из списка

Стоп, когда вы проверили все 81 позиции.

Это дает вам не только уникальные доски, но и доски, на которых вы не можете удалить больше чисел, не разрушая уникальность решения.

Конечно, это только вторая половина алгоритма. Первая половина состоит в том, чтобы сначала найти полную действительную доску (заполненную случайным образом!). Она работает очень похоже, но «в другом направлении»:

Начните с пустой доски.

Добавьте случайное число в одну из свободных ячеек (ячейка выбирается случайным образом, а число выбирается случайным образом из списка чисел, действительных для этой ячейки в соответствии с правилами SuDoKu).

Используйте решатель обратного отслеживания, чтобы проверить, есть ли на текущей плате хотя бы одно допустимое решение. Если нет, отмените шаг 2 и повторите с другим номером и ячейкой. Обратите внимание, что этот шаг может создать полноценные доски самостоятельно, но они ни в коем случае не случайны.

Повторяйте, пока доска не будет полностью заполнена числами.

10 плюса

273683 Репутация автора

Если P = NP, не существует алгоритма полиномиального времени для генерации общих задач судоку с одним решением.

В своей магистерской диссертации Такаюки Ято определил «Другая проблема решения» (ASP), где цель, учитывая проблему и какое-то решение, найти другое решение этой проблемы или показать, что ее не существует. Затем Ято определил ASP-полноту, проблемы, для которой трудно найти другое решение, и показал, что судоку является ASP-полной. Так как он также доказывает, что ASP-полнота подразумевает NP-твердость, это означает, что если вы разрешите использовать доски судоку произвольного размера, то не будет алгоритма за полиномиальное время, чтобы проверить, имеет ли созданная вами головоломка уникальное решение (если P = NP).

Извините, что испортил ваши надежды на быстрый алгоритм!

5015 Репутация автора

Я также думаю, что вам придется явно проверить уникальность. Если у вас меньше 17 акций, уникальное решение очень маловероятно: ничего не найдено, хотя пока не ясно, может ли оно существовать.)

Но вы также можете использовать SAT-решатель, в отличие от написания собственного алгоритма возврата. Таким образом, вы можете в некоторой степени регулировать, насколько трудно будет найти решение: если вы ограничите правила вывода, которые использует SAT-решатель, вы можете проверить, можете ли вы легко решить головоломку. Просто Google для «SAT решения судоку».

Автор: DaveFar Размещён: 02.09.2011 08:33

1 плюс

71 Репутация автора

Вот способ создать классическую головоломку судоку (головоломка судоку с одним и единственным решением; предварительно заполненные квадраты симметричны вокруг центрального квадрата R5C5).

1) начать с полной сетки (используя заполнение группы плюс круговое смещение, чтобы получить его легко)

2) удалить число (я) из двух симметричных квадратов, если очищенные квадраты могут быть выведены с использованием оставшихся подсказок.

3) повторять (2) до тех пор, пока не будут проверены все числа.

Используя этот метод, вы можете создать очень простую головоломку судоку с программированием или без него. Вы также можете использовать этот метод для создания сложных головоломок судоку. Вы можете поискать «создать классическую судоку» на YouTube, чтобы получить пошаговый пример.

1 плюс

11 Репутация автора

Решение состоит в том, чтобы разделить на 2 части:
A. Генерация шаблона чисел 600 миллиардов
B. Генерация шаблона маскирования

A) Для шаблона номера самый быстрый способ, который может генерировать уникальные комбинации без затрат времени на поиск или тестирование

Шаг 1. Выберите уже существующую матрицу, я выбрал следующую, так как она может быть легко сделана человеком без какой-либо помощи со стороны вычислительного устройства или решателя:

Первая строка — числа в порядке возрастания.
Вторая строка также находится в порядке возрастания, но начинаются с 4 и вращаются.
Третья строка также находится в порядке возрастания, но начинаются с 7 и вращаются вокруг
строки 4,5,6: замените столбец из трех ячеек на верхний. правый столбец — 2 5 8 и сверните в ячейке 3×3 для последнего столбца
Строка 7,8,9: замените столбец из трех ячеек на верхний правый столбец — 3 6 9 и сверните в ячейке 3×3 для последнего столбца

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 1 5 6 4 8 9 7
5 6 4 8 9 7 2 3 1
8 9 7 2 3 1 5 6 4
3 1 2 6 4 5 9 7 8
6 4 5 9 7 8 3 1 2
9 7 8 3 1 2 6 4 5

Шаг 2. Перемешайте цифры и замените их во всех остальных ячейках.
Шаг 3. Произвольно переставьте столбцы 1,2 и 3 внутри себя.
Шаг 4. Произвольно переставьте столбцы 4,5 и 6 внутри себя.
Шаг 5. Произвольно переставьте столбцы 7,8 и 9. внутри себя
Шаг 6. Произвольная перестановка строк 1,2 и 3 внутри себя
Шаг 7. Произвольная перестановка строк 4,5 и 6 внутри себя
Шаг 8. Произвольная перестановка строк 7,8 и 9 внутри себя
Шаг 9. Произвольная перестановка в 3 группах столбцов размером 9×3
Шаг 10. Произвольно переставить в 3 ряда строк размером 3×9

5 8 3 1 6 4 9 7 2
7 2 9 3 5 8 1 4 6
1 4 6 2 7 9 3 8 5
8 5 2 6 9 1 4 3 7
3 1 7 4 2 5 8 6 9
6 9 4 8 3 7 2 5 1
4 6 5 9 1 3 7 2 8
2 3 1 7 8 6 5 9 4
9 7 8 5 4 2 6 1 3

Б) Для маскирующего шаблона нам нужен решающий алгоритм. Поскольку у нас уже есть довольно уникальная сетка чисел (что также решаемо!), Это дает нам более высокую производительность при использовании решателя

Шаг 1: Начните с выбора 15 случайных местоположений из 81.
Шаг 2: Проверьте с помощью решателя, есть ли у него уникальное решение
Шаг 3: Если решение не уникально, выберите дополнительное местоположение. повторите шаги 2 и 3, пока не будет найдено уникальное решение

Это должно дать вам очень уникальную и быструю доску судоку.

Автор: gapjiba Размещён: 27.03.2019 09:02

13 Репутация автора

Один из способов генерировать судоку быстрее.

  1. найти существующее судоку.
  2. обменять значение со случайной группой.
  3. поменяйте ячейку или столбец, или сетку столбцов, или сетку столбцов.

Если вы поменяете значение, оно станет другим, если не поменять строки или столбец, судоку не изменится в основном.

Вы можете пометить судоку с 9 сетками, обмен строк и столбцов должны выполняться в той же сетке. Как вы можете поменять строки 1-3, строки 4-6, строки 7-9, не обменивать строки 1-4 или строки 1-7. Вы также можете поменять сетку строк (поменять строку 1

Решите судоку: запишите пустой со всеми возможными значениями, затем проверьте значение от 1 до 9. Если одно значение является уникальным, удалите его из цикла.

Источник:
http://svrecord.ru/excel/kak-sdelat-sudoku-v-excel.html

Расстановка случайных чисел в массиве 9х9, по правилам судоку

1) Помогите написать макрос: расстановка случайных чисел в массиве 9х9, по правилам судоку(одна и та же цифра может появиться только один раз в каждой строчке, столбике и районе ).

2) Ещё помогите написать макрос: чтобы при выполнении макроса в выбранную ячейку вписывалась определенная цифра. (хочу сделать что-то вроде клавиатуры, для заполнения судоку, после выполнения вопроса №1).

P.S. Сам очень плохо разбираюсь в vba , если не сложно напишите эти макросы с объяснением.
Заранее спасибо.

В массиве 9х9 действительных чисел найти сумму элементов в каждой строке
В массиве 9х9 действительных чисел найти сумму элементов в каждой строке.

В массиве из 15 двухзначных случайных чисел найти среднее арифметическое чисел, кратных 3
4)В массиве из 15 двухзначных случайных чисел найти среднее арифметическое чисел, кратных 3

Найти сумму всех отрицательных чисел в массиве случайных чисел
Помогите с кодом Найти сумму всех отрицательных чисел в массиве случайных чисел.

Подсчитать количество четных чисел в массиве из 20 случайных чисел
12. Подсчитать количество четных чисел в массиве из 20 случайных чисел

Читайте также  Пунктирная линия в excel как сделать

Падший,
Вы пишете, что плохо разбираетесь в VBA.
Интересно, а терминами хорошо владеете?
Скажите мне, что означает слово «Google»?
А то ведь не знаю, что это такое и с чем его едят ))

Я к тому, что судоку — избитая тема, примеров лом, качай — не хочу!
Вот один из них(JL, vbaexcel.eu), немного мной усовершенствованный.

По поводу клавиатуры. Можно и кнопками, и формой, но гораздо удобнее — использовать пользовательскую панель (в excel 2003).
1) Сервис-Настройка-Панели инструментов-Создать-Ввести имя-Ок.
2) Сервис-Настройка-Команды-Макросы-Настраиваемая кнопка-Зажать ЛКМ и перенести на созданную панель.
3) ПКМ на созданной кнопке-Изменить значок на кнопке-Рисуете цифры.
4) ПКМ на созданной кнопке-Назначить макрос-Zap_1.
5) И так-для всех цифр.
6) Квадратик — заполнение всеми цифрами (Zap_All)

Макросы для всех кнопок — в «Module1».

Пользовательская панель не сохраняется в самом файле. Конечно, можно было добавить файл
C:Documents and SettingsUsernameApplication DataMicrosoftExcelExcel11.xlb,
но мне хочется, чтобы Вы сами научились создавать панели.

Падший, зачем Вы продублировали тему про судоку дважды (https://www.cyberforum.ru/vba/thread719114.html), да еще и «апнули»? После Вашего дублирования при почти готовом моем коде у меня вдруг пропало всякое желание Вам помочь.

И чем Вас не устроил готовый вариант?
Или нужно «изобрести велосипед»?
Ваш код никуда не годится. Все намного сложнее, чем вы думаете.

Между прочим решение Вашего вопроса (в т.ч. оптимизация, тестирование и отладка) заняло у меня немало времени.

И потом, для чего Вам понадобилось судоку? По учебе? Сомневаюсь (вследствие повышенной сложности), что где-то могут быть такие задания.
А Вы не боитесь, что Ваш преподаватель сюда заглянет?
Или по работе?
И Вы еще хотите, чтобы Вам это здесь сделали бесплатно, а сами за это еще зарплату получите!
Где же Ваша квалификация?

Не забывайте, что в малых секциях 3 на 3 числа также не должны повторяться.
Вот универсальный и быстрый алгоритм генерации массива (моя собственная разработка).
Показана работа с трехмерными массивами, генерация случайного числа в заданном диапазоне.

9*9 — формирует за сотые доли секунды.
16*16 — от 3 до 30 сек.

Следует отметить, что существуют более быстрые алгоритмы, основанные на перестановке строк и столбцов готовой матрицы, но для таких получаемых матриц характерно меньшее разнообразие.

Источник:
http://www.cyberforum.ru/vba/thread715123.html

Sudoku Solver in Excel

October 27, 2005

We are a little slow here in the midwest. The Akron Beacon Journal just recently started publishing a daily Sudoku puzzle in our comic strip pages. Wow! Talk about a time waster! I nearly became addicted to solving these puzzles.

Sudoku is a 9×9 grid. In the newspaper each day, they may fill in 20-30% of the 81 numbers in the grid. Your goal is to fill in the remaining numbers. Each row, column, and 3×3 subgrid must contain each of the digits from 1 through 9 without any digits repeating.

Sudoku

When you consider the puzzle above, the top left square can not contain 1, 5, 6 or 8 because these numbers already appear in the first column. The top left square can not contain 4 or 9 because these numbers already appear in the same row. It can not contain a 4 because a 4 appears in the upperleft 3×3 subgrid. Thus, the possible numbers for the top left cell are 2, 3, or 7. Trying to solve the puzzle from the morning paper quickly consumes all of the time for breakfast and can make you late for work if you are not careful.

Enter Mike Oldroyd. A few months ago, he sent me an Excel workbook to solve Sudoku. Mike writes, «Just for fun a few days ago I decided to try and use Excel to solve Soduku puzzles. Attached is the result. I have not protected the VBA code so anyone who is interested can poke inside to see how it works.»

Mike’s workbook is very cool. It gives you the complete solution in a few seconds. I can now concentrate on writing the next Excel book instead of trying to solve these puzzles. It would probably be cooler if I adapted the workbook to solve the puzzle but only reveal the one square that I’m stuck on. Sometimes, if I could just solve one square, the rest of the puzzle would start to fall into place.

So — a big thank you to Mike for contributing this workbook. I’ve zipped it at this link.

Update! Jobey Jones from Surrey, England sent in a workbook that is a Sudoku Assistant. Instead of giving you the solution, it makes quick work of a lot of the work involved in solving Sudoku.

Enter the puzzle in his grid, and many formulas provide statistics. The fact is that the digits from 1 through 9 add up to 45, so first Jobey figures out the total for each row, column, subgrid and compares this to 45. He reports which numbers are missing in the row, the column, and each subgrid.

My favorite part is this section where he shows which numbers are still possible in each cell of the grid. Clearly, the 2nd column in the 5th row must be a 9, since that is the only value left.

Jobey Jones Sample

If you still want to do some of the work of solving Sudoku, download this zipped sudoku2.zip. This file was updated to version 2 on Aug 10, 2006.

If you have both programs, you can enter the puzzle in one form, then use Copy / Paste Special — Values to copy to the other program.

Thanks to Jobey for sharing this workbook with Sudoku fans everywhere.

Update Again! Jerry from Erie, New York sent in another workbook that is a Sudoku solver. This one is cool because it lets you see how to solve Sudoko iteratively. Enter the puzzle from the paper. Jerry’s workbook shows you which squares can be solved right now. Click Solve to put those numbers in the grid. Then, new squares light up in yellow as being solvable. Press Solve to put those squares in the grid. If you are new to Sudoku, this will help you to understand that solving Sudoku is a step by step process.

Enter the puzzle in the upper left grid.

Jerry from Erie Sample — 1

The upper right grid will light up in one of two shades of yellow to tell you the squares that can be solved.

Jerry from Erie Sample — 2

Here is how it knows the lower right square has to be a 6: All of the other numbers from 1 through 9 are already used: 2, 3, 4, and 5 are in the same row. 4, 7, and 9 are in the same column. 1, 2, 5, and 8 are in the same subgroup. This means the only possibility left is a 6.

Jerry from Erie Sample — 3

Click the Solve. button to transfer the yellow squares to the upper left grid. Once that information is known, new yellow squares show up in the upper right. Continue the process.

Here is a good example in the second round. There are three unfilled cells in the right column. They all could host a 3. The one in yellow can only host a 3, meaning that the square with the possibility of a 3 or 8 must be an 8. In these cases, the 3,8 square is highlighted in lighter yellow and when you click solve, an 8 will be sent to the grid. The lower right grid shows you which of the light-yellow numbers will go to the grid.

Jerry from Erie Sample — 4

Thanks to Jerry for contributing this workbook. Download it zipped from JerrySuduko.zip.

Update For 2010! David Dawson of Sydney has sent along his version of a MS Excel Suduko solver. The interface is colourful and offers not only the working version of the puzzle, but the starting puzzle as well.

David Dawson Sample — 1 David Dawson Sample — 2

Источник:
http://www.mrexcel.com/tech-tv/sudoku-solver-in-excel/