# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем серию видеоуроков по созданию алгоритма решения головоломки Судоку. Ваша задача - разобраться с правилами этой игры. найти/распечатать бумажное (!) Судоку. Решить его ручкой или карандашом. Сфоткать решение и приложить к отчёту. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Ничему Сложности: Решить судоку Комментарии: Честно говоря, никогда не любил судоку.. Такая себе задача, в которой нужно больше гадать чем думать. Я, конечно, не знаю спецальных техник по его решению, но пока так |
|||||
2 | Сетка для цифр |
1 тест |
|||
На этом уроке мы создадим класс Sudoku, опишем в нём две константы и создадим функцию для отображения сетки для цифр. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Рисовать сетку для судоку Сложности: Ничего Комментарии: • Стоп, а почему именно такое условие для цикла? По сути у нас получается: (x + 1) * x, что можно преобразовать в: x^2 + x, а учитывая, что x^2 = max, так что получается: max + sqr Как по мне эта формула смотрится лучше =) • И можно же сделать, чтобы значение sqr само считалось в зависимости от max |
|||||
3 | Печать цифр в таблице |
|
|||
На этом уроке мы добавим метод для добавления цифр в наш Судоку. Также напишем функцию для отображения цифр в консольном экране. И свяжем их через использование делегата. В конце урока заполним наше поле случайнмыи цифрами. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: А делегат вообще что-то ещё может кроме хранения ссылки на функцию с определёнными аргументами? Никаких дополнительных функций, никаких модификаций (например, необязательные аргументы). Вроде в курсе про функциональному программированию немного затрагивали эту тему и там, если я правильно помню, делегаты были немного больше того, что показано, например, в том же уроке из Новых технологий или здесь (хотя, может, я и ошибаюсь). |
|||||
4 | Проверка правил игры |
1 тест |
|||
На этом уроке мы наконец-таки начнём писать алгоритм. В метод PlaceDigit() мы запрограммируем проверку правил игры. Числа должны быть из верного диапозона, они не должны повторяться в строчке, в столбце и в квадрате. Под занавес мы сгенирируем случайную матрицу по всем правилам судоку. Не факт, что её можно будет решить, и что решение будет единственным. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Проверять, можно ли вставить число Сложности: Ничего Комментарии: Ещё и по квадратам нужно было проверять?? Я всю жизнь играл неправильно =) |
|||||
5 | Загрузка головоломки с интернета |
1 тест |
|||
На этом уроке мы напишем функцию для загрузки Судоку с интернет-сайта. Через буфер обмена содержимое страницы будет размещено в текстовом файле. Алгоритм будет его анализировать и добавлять в матрицу класса Sudoku. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Заполнять судоку из файла Сложности: Ничего Комментарии: Ух, 4 вложенных цикла, неплохая ёлочка получилась =) |
|||||
6 | Идея алгоритма - 81 цикл |
|
|||
На этом уроке мы вручную проработаем алгоритм поиска в глубь с возвращением. Твоя задача - не аналитически решить судоку, а программно, применяя описанный на уроке алгоритм. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Рекурсивному методу решения судоку Сложности: Ничего Комментарии: Можно было назвать урок "81 вложенный цикл" |
|||||
7 | Рекурсивная функция поиска |
1 тест |
|||
На этом уроке мы напишем рекурсивную функцию NextDigit(), которая и будет заниматься поиском решения головоломки. Способы оптимизации алгоритма поиска решения: https://habrahabr.ru/post/173795/ Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Находить решение судоку Сложности: Ничего Комментарии: • Хорошо, но можно же разделить PlaceDigit на два метода (1 - проверяет правила, 2 - записывает число), и тогда вместо ClearDigit вызывать второй • А почему в списку уроков у этого длительность - 00:00:00 |
|||||
8 | Сохранение ответа |
1 тест |
|||
На этом уроке мы напишем функцию для сохранения решения головоломки в текстовый файл.
Отчёт отправил: 9567. Максим Выполнено за 10 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: Что-то мне всё больше начинает казаться, что делегаты - не лучшее решение подобных проблем. Лучше было бы подписка на событие. То есть чтобы мы в Prigram.Start написать что-то вроде: ss = new SudokuSolver(); ss.PlaceDigit += PlateDigit; //где ss.PlaceDigit - событие У меня даже где-то был пример, как это сделать |
|||||
9 | Генерация головоломок |
|
|||
На этом уроке мы напишем алгоритм для формирования Судоку-головоломок, поэкспериментируем с генератором случайных полей. Отчёт отправил: 9567. Максим Выполнено за 10 мин. [Показать отчёт] Научился: Генерировать случайное судоку Сложности: Ничего (у меня сразу всё заработало) Комментарии: Следующий на очереди - Сокобан, который закончит моё комбо из 5 курсов подряд. Если, конечно, ещё какого-то супер предложения не будет =) (Устал уже немного, но очень хочу его пройти) |
|||||
10 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершением этого видеокурса! Запиши и опубликуй видеообзор созданной программы. Напиши, какой курс будешь проходить следующим. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Алгоритму решения судоку Сложности: Сложного ничего не было, но было интересно =) Комментарии: Интересный получился курс. На нём вы повторите рекурсию, работу с файлами и делекаты, и что самое главное, напишете программу, которая сможет решить абсолютно любое судоку (так что теперь вы сможете скоротать зимние вечера перед камином за чем-нибудь другим). Особо ничего нового на нём вы не узнаете, но это не помешает вам с интересом его проходить. А ещё это отличная практика =) Что касается следующего курса: Это будет Сокобан, который закончит моё комбо из 6 курсов подряд. Если, конечно, не будет ещё какого-то супер предложения =) (Устал уже немного, но очень хочу его пройти) |
|||||
11 | VIP. Модульное тестирование |
|
|||
На этом уроке мы познакомимся с модульным тестированием. Мы напишем небольшой калькулятор, в который добавим проект для модульного тестирования, и покажем, как это всё работает, как это нужно использовать. Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Создавать автоматические тесты Сложности: Ничего Комментарии: А если один и тот же урок есть в разных курсах, его нужно несколько раз проходить? |
|||||
Итого: 11 видеоуроков |
2 час. 54 мин. 6 тестов |
15 чел. | |||
Финалисты: zhikharevav, Максим, Новопашин Владимир, Максим Лапшинов, Волнухин Владимир, Tekashnik, Александр, Николай Денисов, Иван, no name, Александр, Anatoli, Freud, Татьяна, MaxB . |