Си шарп видео уроки

Формула программиста
основатель — Волосатов Евгений Витольдович

Мат Конём и Слоном

Полное решение шахматной задачи - мат конём и слоном

Умение создавать свои алгоритмы - это залог успеха программиста.
Именно алгоритмическое мышление отделяет
обычного программиста от профессионала.

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

Решение шахматной задачи - наиболее интересный
и эффективный способ потренироваться в этом.


Мы напишем алгоритм комплексного (полного)
решения шахматной задачи - мат конём и слоном.

Мы найдём правильный ход для любой позиции.
На примере решения этой задачи
ты очень многое сможешь узнать
о теории алгоритмов.



Хочу купить!

Купить в рассрочку за мегахеши

Цена: 2500 p.


Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Постановка задачи 00:10:00 21 чел. ★ 5 Done
  Мы начинаем видеокурс "Мат конём и слоном".
Цель курса - создать базу решений этой задачи.
То есть для любой исходной комбинации найти
правильный ход, который ведёт к победе.
Отчёт отправил: 8275. Tekashnik Выполнено за 15 мин. [Показать отчёт]
Научился: Ставить мат 
Сложности: Ставить мат 
Комментарии: Мне кажется все позиции, либо нереальные либо стандартные 
2 Перебор всех комбинаций 00:20:58 16 чел. ★ 5 Done
  На этом уроке мы создадим вложенные циклы
для перебора всех возможных вариантов
расстановки наших фигур на шахматной доске.
Отчёт отправил: 8275. Tekashnik Выполнено за 36 мин. [Показать отчёт]
Научился: Искать количество комбинаций 
Сложности: не запутаться в сокращениях 
Комментарии: Любопытно посмотреть на окончательный алгоритм 
3 Королевское правило 00:17:12 14 чел. ★ 5 Done
  На этом уроке мы проверим, стоят ли короли на соседних клетках.
Потом мы напишем заготовку для проверки, является ли позиция матовой.
Самостоятельное задание - написать функцию onKnight().
При желании написать проверку для слона пока писать не нужно.
Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Ходить конём 
Сложности: Придумать, что было самым сложным 
Комментарии: Нужно какую то наглядность привнести в проект)) а то получаем числа, и всё 
4 Конь ходит буквой Гэ 00:11:53 13 чел. ★ 4.9 Done
  На этом уроке мы напишем метод, который проверяет,
рубит ли конь указанное поле. Алгоритм не сложный.
Самостоятельное задание:
почитать о Нотации Форсайта — Эдвардса на Википедии.

Написать метод формирования этой нотации по имеющимся координатам четырёх фигур.
Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php
Отчёт отправил: 8275. Tekashnik Выполнено за 56 мин. [Показать отчёт]
Научился: Читать нотацию 
Сложности: Писать функцию getFEN 
Комментарии: Но я её всё таки написал)) можно упростить, но циклы очень конечные, так что времени это тратит совсем мало 
5 Нотация Форсайта - Эдвардса 00:15:17 13 чел. ★ 5 Done
  На этом уроке мы научимся экспортировать
найденные позиции в FEN код, чтобы посмотреть
их в любом шахматном эмуляторе.
Сайт для чтения FEN: http://www.apronus.com/chess/wbeditor.php

Самостоятельное задание:
Написать метод проверки для слона, бьёт ли он поле.
Отчёт отправил: 8275. Tekashnik Выполнено за 39 мин. [Показать отчёт]
Научился: Получать все FEN позиции для искомых фигур 
Сложности: Было очень интересно 
Комментарии: Уху) Визуализация)) 
6 Ворошиловский слон 00:24:09 12 чел. ★ 5 Done
  На этом уроке мы напишем наконец-таки
метод bool onBishop (byte x, byte y) и
подсчитаем количество матовых позиций.
А в конце урока блеснём использованием итератора :)

Самостоятельное задание: придумать структуру
для хранения найденных позиций и описать её в комментариях к отчёту.
Отчёт отправил: 8275. Tekashnik Выполнено за 49 мин. [Показать отчёт]
Научился: Писать функцию OnBishop 
Сложности: Написать функцию onBishop 
Комментарии: Для храненения может SQLite использовать, имхо там всё заточено под хранение и быстрый доступ и файл один.  
7 Две структуры 00:11:34 12 чел. ★ 4.9 Done
  На этом уроке мы подготовимся к рефакторингу нашего кода.
Отчёт отправил: 8275. Tekashnik Выполнено за 29 мин. [Показать отчёт]
Научился: Создавать структуры 
Сложности: Удалять написанный код 
Комментарии: Рефакторинг всегда маст хэв.  
8 Рефакторинг кода 00:36:36 11 чел. ★ 4.9 Done
  На этом уроке мы сделаем рефакторинг всего кода.
В конце урока будем искать ошибку :)
Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Рефакторить программу без ошибок 
Сложности: Найти свою ошибку у меня было 100121 комбинаций + организовать вывод информации 
Комментарии: Нашёл ошибку быстро, видимо у вас другие ошибки, я рефакторил в полглаза глядя на видео, просто конву слушал, видимо поэтому и не сделал ваших ошибок, а сделал свою. А getFen просто тупо перенес. правдо пришлось подумать как их выводить в основной программе, но всё таки дошло)) 
9 Чистый ход 00:10:29 10 чел. ★ 5 Done
  На этом уроке мы перенесём метод getBoard() и getFEN()
в структуру Combo, найдём последнюю ошибку и порадуемся чистому коду!
Отчёт отправил: 8275. Tekashnik Выполнено за 24 мин. [Показать отчёт]
Научился: Разделять методы 
Сложности: Всё уже почти было сделано) 
Комментарии: Что с алгоритмом поиска матовой комбинации не вышло... 
10 Псевдо-алгоритм перебора 00:28:27 10 чел. ★ 5 Done
  На этом уроке мы составим псевдо-алгоритм
поиска всех решений поставленной задачи.
Самостоятельное задание -
проработать алгоритм на шахматной доске для ферзя и короля.
Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Рисовать блок-схему 
Сложности: Рисовать блок-схему 
Комментарии: Это очень полезная штука на этапе планирования/проектирования программы, но так лень всё это делать 
11 Белая и чёрная очередь 00:16:34 9 чел. ★ 5 Done
  На этом уроке мы начнём реализацию алгоритма
перебора всех позиций с правильными ходами за белых.
Создадим ещё две структуры и две очереди - белую и чёрную.
Отчёт отправил: 8275. Tekashnik Выполнено за 45 мин. [Показать отчёт]
Научился: Писать кучу серьёзного кода 
Сложности: Не потерять нить рассуждений 
Комментарии: Сам что то пока думаю не осилю эти функции, мозг закипает под конец рабочей недели... 
12 Генерация белых ходов 00:35:09 9 чел. ★ 5 Done
  На этом уроке мы напишем три метода,
которые возвращают все возможные ходы
для каждой белой фигуры - для короля, слона и коня.
В конце урока выведем все позиции,
в которых белые ставят мат в один ход.
Отчёт отправил: 8275. Tekashnik Выполнено за 58 мин. [Показать отчёт]
Научился: Писать функции ходов фигур 
Сложности: Не потерять нить рассуждений, наворочено уже много 
Комментарии: Написал функцию print(); После визуализации нашёл пару ошибок. Сначала доска лежала на боку, потом слон ходил в поле короля. Но с помощью визуализации все ошибки подчистил) 
13 Белая коробка 00:16:38 9 чел. ★ 5 Done
  На этом уроке мы создадим класс WhiteBox
для хранения всех позиций, где ход белых
с правильным ходом для приближения к мату.
Отчёт отправил: 8275. Tekashnik Выполнено за 32 мин. [Показать отчёт]
Научился: Создавать класс всех полей 
Сложности: Разобраться, что к чему и отчего 
Комментарии: Вот это серъёзное движение) 
14 Консольная шахматная доска 00:10:01 9 чел. ★ 5 Done
  На этом уроке мы напишем метод print()
для вывода шахматной доски в консоли.
Отчёт отправил: 8275. Tekashnik Выполнено за 6 мин. [Показать отчёт]
Научился: Выводить в консоль доску 
Сложности: Придумывать, что было самым сложным 
Комментарии: Ну это я уже 2 урока назад сделал 
15 156 матов в полтора хода 00:30:02 9 чел. ★ 5 Done
  На этом уроке мы допишем алгоритм,
узнаем, какая в нём есть ошибка,
исправим её и найдём все позиции
"мат в полтора хода", их будет 156.

Отчёт отправил: 8275. Tekashnik Выполнено за 47 мин. [Показать отчёт]
Научился: Искать все матовые позиции в один ход 
Сложности: понять все закономерности кода 
Комментарии: Хорошо замешаный код) 
16 Мат в 33 хода. 00:44:49 8 чел. ★ 5 Done
  На этом уроке мы поместим два цикла в один общий цикл,
чтобы сгенерировать решения для всех позиций,
постепенно увеличивая дистанцию до матового окончания.

Что ещё можно и нужно сделать.
0. Проверить, нет ли патовых ситуаций.
1. Пересмотреть все позиции, для которых нет решения.
2. Изменить массив белого ящик, координата слона от 0 до 31.
3. Модифицировать алгоритм, чтобы он работал для чернопольного слона.
4. Сделать симметрию относительно белого короля в квадрате 4х4.
5. Пересмотреть самые сложные позиции - мат в 67 полуходов.
6. Придумать эффективный способ хранения для белого ящика.
7. Решить задачу "мат двумя слонами".
8. Решить задачу "мат ладьёй".
9. Решить задачу "мат ферзём".
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 27 мин. [Показать отчёт]
Научился: Находить решения любых позиций для слона коня и королей 
Сложности: Сложно представить, какая гора информации перелопачивается для такого поиска 
Комментарии: Посмотрел, самыес сложные позици из которых мат в 33 хода, весёлинькие 
17 ПОЛУФИНАЛЬНЫЙ УРОК 7 чел. ★ 5 Done
  Поздравляю, ты прошёл ровно половину курса!
Приложи фото самых интересных найденных
матовых/патовых/иных комбинаций
Напиши, нравится ли тебе этот курс,
нашёл ли ты здесь то, что ожидал.

... Меж тем сказке далеко до развязки ...
Отчёт отправил: 8275. Tekashnik Выполнено за 31 мин. [Показать отчёт]
Научился: Печатать 
Сложности: Сложно это всё представить, и разобрать в мозгу по винтику, этот серьёзный алгоритм 
Комментарии: Курс добротный, можно теперь пробовать писать компьютерный алгоритм игры в шахматы) Понравись некоторые подходы к решению поставленых задач ну и конечно же организация и манипуляция с большим количеством данных. Но впереди ещё много интересного, и не побоюсь этого слова, крайне полезного материала) Но для новичков я бы не рекомендовал в некоторых местах мозг начинает кипеть. Всем добра) 
18 Нано Шахматы 00:06:12 8 чел. ★ 5 Done
  На этом уроке вам будет представлен фотокурс НаноШахматы,
который необходимо пройти, для эффектного и логичного завершения этого курса.
Отчёт отправил: 8275. Tekashnik Выполнено за 10 мин. [Показать отчёт]
Научился: Вспомнил про веб шахматы 
Сложности: Найти уже сделаный курс по Нано-шахматам 
Комментарии: Все пункты нано шахмат уже сделаны) Весёлый был курс 
19 Сериализация матрицы ходов 00:30:07 6 чел. ★ 5 Done
  На этом уроке мы сделаем сериализацию и десериализацию массива WhiteMove[,,,].
Затем обсудим, как можно размер файла уменьшить в 100 раз.
Отчёт отправил: 8275. Tekashnik Выполнено за 34 мин. [Показать отчёт]
Научился: Научился делать сериализацию 
Сложности: Придумывать, что было самым сложным 
Комментарии: ПОлезно знать, что есть такая штука как сериализация 
20 Экономия памяти 00:22:26 6 чел. ★ 5 Done
  На этом уроке мы переделаем класс WhiteBox,
теперь для его работы потребуется в несколько раз меньше памяти.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: Сокращать расход памяти в программе 
Сложности: В могзу проворачивать все эти бесчисленные преобразования 
Комментарии: Написал Save() но получилось у меня 280 Mb, не мастер я сохранения данных, ждём следующего урока, дабы посмотреть, как оно это у профессионалов бывает) 
21 Шестнадцать мегабайт 00:41:54 6 чел. ★ 5 Done
  На этом уроке мы сохраним базу ходов в 16-мегабайтный файл.
Также сделаем считывание из файла и несколько раз поиграем
с компьютером, пока он нас не заматует.
Отчёт отправил: 8275. Tekashnik Выполнено за 50 мин. [Показать отчёт]
Научился: Смотреть длинное видео 
Сложности: Сложным было сидеть и смотреть ЗАПИСЬ уроку, а подсказать возможности нет((( 
Комментарии: Я весь извёлся глядя видео, ведь я с данной проблемой по пустому файлу столкнулся на прошлом уроке когда сам делал запись просто в текстовый файл. ТОже мучался, но нашёл причину и тут то же самое! Очень хотелось помочь подсказать, но увы и ах я смотрю в записи. И тут я в полной мере осознал что живой вебинар гораздо круче чем запись. По поводу неправильных ходов, вы когда первый раз убрали цикл, то изменили переменную find = true, а когда раскомментировали цикл, то уже переменную обратно в false не вернули... тоже очень хотелось подсказать, но, как я уже говорил, увы и ах... 
22 Игра без массива 00:17:39 6 чел. ★ 5 Done
  На этом уроке мы ещё раз переделаем класс WhiteBox,
теперь для работы программы НЕ НАДО будет загружать
в память весь файл, нужные значения будут загружаться
по ходу игры прямо из нужного места в файле.
Отчёт отправил: 8275. Tekashnik Выполнено за 39 мин. [Показать отчёт]
Научился: Читать данные из бинарного файла) 
Сложности: Понять как именно он выцепляет из бинарного файла данные 
Комментарии: Всем добра, всё очень круто. 
23 План визуализации 00:23:12 6 чел. ★ 5 Done
  С этого урока мы начнём создавать визуализацию созданной базы данных.
На этом уроке мы составим план действий по внедрению проекта.
Мы будем работать с технологиями PHP и JavaScript.

Отчёт отправил: 8275. Tekashnik Выполнено за 13 мин. [Показать отчёт]
Научился: Проектировать визуализацию проекта 
Сложности: Придумывать, что было самым сложным 
Комментарии: Уже делал Нано шахматы 
24 Четыре фигуры на доске 00:25:47 4 чел. ★ 5 Done
  На этом уроке мы реализуем первые три пункта нашего плана.
1. Отобразить шахматную доску с 4 фигурами.
2. Отобразить доску по заданному FEN-коду.
3. Разместить тексты для отображения информации.
Отчёт отправил: 8275. Tekashnik Выполнено за 46 мин. [Показать отчёт]
Научился: Писать php-функции 
Сложности: Писать php-функции 
Комментарии: Тяжеловато с php приходится вникать) 
25 Создание PHP функций 00:50:58 4 чел. ★ 5 Done
  На этом уроке мы погрузимся в РНР-программирование.
Мы напишем несколько функций для считывания данных
из нашей базы данных ходов и формирования их в массиве.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 23 мин. [Показать отчёт]
Научился: Писать php-функции 
Сложности: Не запутаться в их многообразии 
Комментарии: Мне нравится) 
26 Дружба PHP с JavaScript 00:28:33 4 чел. ★ 5 Done
  На этом уроке мы подружим PHP с JavaScript -
сделаем вызов из JavaScript функции на PHP,
результат которой будет возвращён назад в JavaScript.
Отчёт отправил: 8275. Tekashnik Выполнено за 56 мин. [Показать отчёт]
Научился: Перевязывать php - JS - php - JS 
Сложности: Не запутаться, реально опыта с php и js мало, нужно следить. На C# можно в полглаза смотреть и писать, а тут так не получается(( 
Комментарии: Очень нравится, что уже не в первом курсе рассматриваются php и js. Программер должен везде уметь)) 
27 Сериализация Json 00:46:49 4 чел. ★ 5 Done
  На этом уроке мы передадим из РНР в JavaScript
всю информацию о белых и чёрных хода, используя json-сериализацию.
Используя полученный объект мы сформируем содержание информационной панели.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 12 мин. [Показать отчёт]
Научился: погрузился в хитросплетения JS и PHP 
Сложности: Не запутаться и всё уловить 
Комментарии: Я уже давненько заметил косячок, но не понимал как это исправить, но теперь понял floor($combo[1] / 2) всё поправил))) ура! ура! ура! 
28 Чёрные ходы на доске 00:09:14 4 чел. ★ 5 Done
  На этом коротком уроке мы отобразим все возможные
ходы чёрного короля прямо на доске, используя числа -
сколько ходов до мата останется при указанном ходе.
Отчёт отправил: 8275. Tekashnik Выполнено за 16 мин. [Показать отчёт]
Научился: Продолжил изучение JS с PHP 
Сложности: Придумывать, что было самым сложным  
Комментарии: Красиво получилось 
29 Последний ход 00:34:01 3 чел. ★ 5 Done
  На этом уроке мы закончим программирование
визуального оформления мата конём и слоном
с использованием технологий PHP и JavaScript.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 21 мин. [Показать отчёт]
Научился: Продолжаю изучать php + JS 
Сложности: Все эти кавычки и теги))) 
Комментарии: Просто лес из всяких кавычек, плюсов, тегов... смотришь и в глазах рябит. Что кстати случилось со звёздочками (которыми оценку уроку ставим, они пропадают, когда на них наживаешь) 
30 Чёрно-белый слон 00:15:58 3 чел. ★ 5 Done
  На этом уроке мы доведём до логического завершения
функцию работы с нашей базой данных, чтобы
она корректно отрабатывала позиции
с чёрнопольным белым слоном.
Это оказалось не так уж и сложно :)
Отчёт отправил: 8275. Tekashnik Выполнено за 37 мин. [Показать отчёт]
Научился: Продолжаю погружаться в JS + PHP 
Сложности: Искать ошибки в php 
Комментарии: Я честно рад, что прошёл данный курс, он мощный! Совсем новичкам наверное будет очень тяжело 
31 ФИНАЛЬНЫЙ УРОК 3 чел. ★ 5 Done
 

Отчёт отправил: 8275. Tekashnik Выполнено за 43 мин. [Показать отчёт]
Научился: Записывать видеообзор 
Сложности: Записывать видеообзор 
Комментарии: Крутой курс, сложный! С хитрыми переплетениями разных технологий + для любителей шахмат можно много чего узнать) и в конце создать искусственный интеллект. 
Видеообзор: https://youtu.be/ZbSf0DqD44c
32 VIP урок с ладьёй 00:55:05 3 чел. ★ 5 Done
  На этом VIP-уроке мы решим шахматную задачу "Мат ладьёй".
Для этого мы пройдёмся по всем функциям,
файлам и скриптам и слегка модифицируем
их для решения новой задачи.
Отчёт отправил: 8275. Tekashnik Выполнено за 1 час. 23 мин. [Показать отчёт]
Научился: Переделывать ПО под определённые нужды 
Сложности: Не упусть ничего 
Комментарии: Всё понравилось, спасибо за курс. Очень полезные разные решения разных ситуаций были расмотрены. Мне понравилось 
  Итого:   32 видеоурока общей продолжительностью 12 час. 27 мин. 3 чел. ★ 5  
  Финалисты:   Tekashnik,   Алексей,   Алексей В. .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Записывать видеообзор.
Отличный курс получился. Такое переплетение различных технологий. Самый интересный курс из всех, что здесь есть (по-моему). Да и шахматы подтянуть поможет :) Ни разу еще мата конем и слоном в партиях ставить не приходилось. Все остальное в видеообзоре :)
Научился: Записывать без шпаргалки
Трудности: Не сбиться, хотя ляпы все таки есть.
Все отлично!!! Я закончил курс, наверное самый глобальный на проекте!!!! Ур-ра-а-а-а-а!!!!