# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем серию видеоуроков по созданию алгоритма решения головоломки Судоку. Ваша задача - разобраться с правилами этой игры. найти/распечатать бумажное (!) Судоку. Решить его ручкой или карандашом. Сфоткать решение и приложить к отчёту. Отчёт отправил: 11019. Trira Выполнено за 6 мин. [Показать отчёт] Научился: Судоку - мой любимый кроссворд. Отлично, что есть возможность поиграть с этим "тренажером мозгов" программно. Сложности: на этом шаге все ясно |
|||||
2 | Сетка для цифр |
1 тест |
|||
На этом уроке мы создадим класс Sudoku, опишем в нём две константы и создадим функцию для отображения сетки для цифр. Отчёт отправил: 11019. Trira Выполнено за 1 день 1 час. 6 мин. [Показать отчёт] Научился: Создан класс Sudoku. Нарисована сетка в текстовом редакторе. Написан метод PrintFrame() для вывода сетки. Сложности: --- |
|||||
3 | Печать цифр в таблице |
|
|||
На этом уроке мы добавим метод для добавления цифр в наш Судоку. Также напишем функцию для отображения цифр в консольном экране. И свяжем их через использование делегата. В конце урока заполним наше поле случайнмыи цифрами. Отчёт отправил: 11019. Trira Выполнено за 15 час. 56 мин. [Показать отчёт] Научился: Написан метод Sudoku.PlaceDigit (int x, int y, int d). Написан метод Program.PrintDigit (int x, int y, int d). Создан делегат и настроена его работа. Матрица Frame заполнена случайными числами. Делегат — это безопасный в отношении типов объект, указывающий на другой метод (или, возможно, список методов) приложения, который может быть вызван позднее Сложности: --- |
|||||
4 | Проверка правил игры |
1 тест |
|||
На этом уроке мы наконец-таки начнём писать алгоритм. В метод PlaceDigit() мы запрограммируем проверку правил игры. Числа должны быть из верного диапозона, они не должны повторяться в строчке, в столбце и в квадрате. Под занавес мы сгенирируем случайную матрицу по всем правилам судоку. Не факт, что её можно будет решить, и что решение будет единственным. Отчёт отправил: 11019. Trira Выполнено за 45 мин. [Показать отчёт] Научился: Написана проверка интервалов в методе PlaceDigit(). Написана проверка горизонталей и вертикалей. Написана проверка квадратов. Дописаны комментарии ко всем проверкам. Матрица заполнена случайными числами по правилам игры. Сложности: все просто |
|||||
5 | Загрузка головоломки с интернета |
1 тест |
|||
На этом уроке мы напишем функцию для загрузки Судоку с интернет-сайта. Через буфер обмена содержимое страницы будет размещено в текстовом файле. Алгоритм будет его анализировать и добавлять в матрицу класса Sudoku. Отчёт отправил: 11019. Trira Выполнено за 2 час. 0 мин. [Показать отчёт] Научился: Написана функция для считывания набора цифр в игре Судоку, сгенерированном на сайте http://kjell.haxx.se/sudoku/ . Для работы функции нужно удалять по одной строке пере каждой цифрой в созданном текстовом файле. Сложности: хочется добавить в написанную функцию еще и удаление по одной строке перед каждой цифрой. Не могу догадаться, как это реализовать |
|||||
6 | Идея алгоритма - 81 цикл |
|
|||
На этом уроке мы вручную проработаем алгоритм поиска в глубь с возвращением. Твоя задача - не аналитически решить судоку, а программно, применяя описанный на уроке алгоритм. Отчёт отправил: 11019. Trira Выполнено за 1 час. 27 мин. [Показать отчёт] Научился: Научилась решать Судоку методом поиска в глубь с возвращением. Нашла ошибку в своем коде прошлого урока: исправила 82й оператор в классе Program, который сдвигал чтение из координаты на 1 шаг вправо. Теперь данный из sudoku.txt считываются без ошибок. Сложности: понять, где ошибка |
|||||
7 | Рекурсивная функция поиска |
1 тест |
|||
На этом уроке мы напишем рекурсивную функцию NextDigit(), которая и будет заниматься поиском решения головоломки. Способы оптимизации алгоритма поиска решения: https://habrahabr.ru/post/173795/ Отчёт отправил: 11019. Trira Выполнено за 1 день 2 час. 40 мин. [Показать отчёт] Научился: Написала функцию для решения Судоку. Написала рекурсивную функцию пошагового заполнения пустых клеток судоку. Решение сложной задачи (для 20 клеток) выполнялось с большим количеством возвратов. Сложности: не выводится в консоль печать счетчика для количества входов в рекурсию. |
|||||
8 | Сохранение ответа |
1 тест |
|||
На этом уроке мы напишем функцию для сохранения решения головоломки в текстовый файл.
Отчёт отправил: 11019. Trira Выполнено за 1 день 12 час. 42 мин. [Показать отчёт] Научился: Добавила функцию SaveAnswer(). Решение для 30 начальных значений сохранила в файл solver.txt Сложности: В первый раз все строки игрового поля выстроились в линеечку, пока не подправила код, добавив доп. фигурные скобки для внешнего цикла по вертикали, чтобы переход на следующую строку при записи в файл проходил корректно. |
|||||
9 | Генерация головоломок |
|
|||
На этом уроке мы напишем алгоритм для формирования Судоку-головоломок, поэкспериментируем с генератором случайных полей. |
|||||
10 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением этого видеокурса! Запиши и опубликуй видеообзор созданной программы. Напиши, какой курс будешь проходить следующим. |
|||||
11 | VIP. Модульное тестирование |
|
|||
На этом уроке мы познакомимся с модульным тестированием. Мы напишем небольшой калькулятор, в который добавим проект для модульного тестирования, и покажем, как это всё работает, как это нужно использовать. |
|||||
Итого: 11 видеоуроков |
2 час. 54 мин. 6 тестов |
15 чел. | |||
Финалисты: zhikharevav, Максим, Новопашин Владимир, Максим Лапшинов, Волнухин Владимир, Tekashnik, Александр, Николай Денисов, Иван, no name, Александр, Anatoli, Freud, Татьяна, MaxB . |