Обучение c# видеоуроки

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

Отзывы о вебинарах комбинаторики



Комбинаторика

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

Объём: 22 видеоурока
Темы: Рекурсия, комбинаторика,
динамическое программирование, фракталы.
Срок: 30 дней.


5,000 руб. АКЦИЯ!


Для подписки на пакет необходимо авторизоваться.

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

# Название видеоурока Решило Рейтинг Доступ
1 Рекурсия. Вступление 147 чел. ★ 4.7 Done
  Отчёт отправил: 7276. Ильшат Решено за 10 мин. [Показать отчёт]
Научился: Посмотрел интересные картинки по теме рекурсия :) 
Сложности: Выбрать две картинки. 
Комментарии: Рекурсия в программировании - это вызов функции из тела этой же самой функции. 
2 Рекурсия. Главный секрет 00:31:52 82 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 55 мин. [Показать отчёт]
Научился: Узнал 2 секрета рекурсии: 1) определить условие ее завершения, простейший вариант решения; 2) определить переход от N к N + 1. 
Сложности: Нарисовать кривую Гильберта. 
Комментарии: Интересное начало, насыщенный по темам курс.  
3 Рекурсия. Заливка области 00:47:23 72 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 15 мин. [Показать отчёт]
Научился: Стал лучше понимать рекурсию, повторил работу с выводом информации на консоль. 
Сложности: Понять алгоритм рекурсивной заливки. 
Комментарии: Евгений Витольдович, благодарю за этот прекрасный пример объяснения работы рекурсии, все наглядно и понятно. Однако первоначально не все было очевидно. Логически-то понятно, например, сначала закрашиваем вверх, потом вниз, потом влево, потом вправо и если дошли до тупика (то есть, условие выхода из рекурсии - закрашенная клетка), то тогда рисуем звездочку и выходим из функции. И технически было понятно, что тут используется своего рода механизм "раскрутки" стека и поэтому мы всегда знаем куда вернемся, главное, чтобы было определено условие выхода из рекурсии. Были проблемы другого рода: понять, как все это вместе работает, особенно когда вложенность вызовов становится большой :) Поэтому решил пошагово проверить работу алгоритма, вместо Thread.Sleep() написал Console.ReadKey() и медленно, но верно смотрел что выдает программа при каждом вызове функции. Здесь еще хорошо подошло то, что показывается направление следующего хода, очень наглядно. В итоге, доволен результатом, спасибо :) 
4 Рекурсия. Факториал 00:04:35 44 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 10 мин. [Показать отчёт]
Научился: Повторил алгоритм расчета факториала числа с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Короткий и понятный урок, идем дальше. 
5 Рекурсия. Числа Фибоначчи 00:03:46 40 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 10 мин. [Показать отчёт]
Научился: Алгоритм расчета числа Фибоначчи с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Идем дальше. 
6 Рекурсия. Общий делитель 00:04:08 40 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 20 мин. [Показать отчёт]
Научился: Повторил алгоритм расчета НОД двух чисел с помощью алгоритма Евклида. 
Сложности: Сложностей не было. 
Комментарии: В условии было указано решить с помощью вычитания двух чисел, но один тест не проходил - причина была переполнение стека, проверил на Visual Studio. Переделал алгоритм, с использованием операции взятия остатка от деления - тест прошел. 
7 Рекурсия. Обратный отсчёт 00:05:52 39 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 15 мин. [Показать отчёт]
Научился: Алгоритм обратного отсчета с использованием рекурсии. 
Сложности: Сложностей не было. 
Комментарии: Красиво, без массивов и циклов, рекурсия впечатляет. 
8 Рекурсия. Фракталы. Спираль 00:25:42 53 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 45 мин. [Показать отчёт]
Научился: Познакомился с понятием "фрактал". 
Сложности: Сложностей не было, кроме следствия небольшого эксперимента: при задании отрицательного шага возникло переполнение стека и visual studio зависла, пришлось перезапустить приложение. Все данные сохранились) 
Комментарии: Понравился результат работы программы, несколько иначе посмотрел на технику применения рекурсивных вызовов функций. 
9 Рекурсия. Фракталы. Треугольник Серпинского 00:23:41 38 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 31 мин. [Показать отчёт]
Научился: Нарисовал на бумаге треугольник Серпинского, рассмотрел два варианта решения. Для экспериментальной части переписал алгоритм расчета трех точек, в результате, на втором скриншоте вариант с пропорцией 3/7 между смежными вершинами. 
Сложности: Переписать алгоритм расчета трех вершин, спасибо ручке и листку бумаги) 
Комментарии: Рекурсия божественна 
10 Рекурсия. Фракталы. Кривая Гильберта 00:35:18 26 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 50 мин. [Показать отчёт]
Научился: Повторил вывод графики на форму, работу с рекурсией. 
Сложности: Понять рекурсивные функции. 
Комментарии: Рекурсивные функции впечатляют, краткие и в то же время емкие. Понравился процесс прорисовки "красных" линий, соединяющих графические элементы, нарисованные на этапе рекурсии более низшей вложенности. Причем из этих же "красных" линий по сути создается весь рисунок. Спасибо за урок, хорошее объяснение и демонстрация рекурсии, я впечатлен:) 
11 Комбинаторика. Счастливые билеты 6 00:02:33 35 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 10 мин. [Показать отчёт]
Научился: Оптимизация алгоритма путем замены цикла условием. 
Сложности: Понять оптимизацию алгоритма. 
Комментарии: Идем дальше. 
12 Комбинаторика. Счастливые билеты N 00:40:51 50 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 15 мин. [Показать отчёт]
Научился: 1) Закрепил навыки работы с рекурсией; 2) Познакомился с интересным вариантом вызова рекурсивной функции в цикле; 3) Поработал с оптимизацией алгоритма, перенос локальных переменных в область определения класса хоть и не имеет логической полезности, но дает прирост в производительности. 
Сложности: Материал хорошо объясняется, сложностей не было. 
Комментарии: Хороший урок, мне понравился, понятны плюсы и минусы рекурсии. Тест N=5 не прошел по тайм-ауту, поэтому, как и предложил Евгений Витольдович, посчитал в Visual Studio (второй скриншот) количество счастливых билетов при N=5 и указал в коде полученное значение. 
13 Комбинаторика. 4 x 4. Ладья x Ферзь 00:26:01 45 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Поиск с отсечением - исключение избыточных комбинаций вызовов рекурсивной функции. 
Сложности: Расчет индексов диагоналей в булевых массивах. 
Комментарии: Интересное решение - использовать проверку условий отсечений с помощью трех булевых массивов. Это достаточно явно отображает словесный алгоритм в программном коде. 
14 Комбинаторика. Много ферзей. Демонстрация 00:47:45 42 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 3 час. 20 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, созданием графического интерфейса программы. 
Сложности: Написать программу демонстрации алгоритма. 
Комментарии: По сути, в прошлом уроке уже был представлен алгоритм решения задачи для N ферзей, в этом уроке было повторение. И дополнительно было предложено написать программу демонстрации алгоритма в консольном режиме. Я решил, что в графическом режиме это будет нагляднее и написал Windows Forms приложение. Информацию выводил в динамическую матрицу pictureBox. 
15 Комбинаторика. Сложение букв 00:36:25 44 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, с методами поиска/замены символов в строке. 
Сложности: В целом, сложностей не было, все хорошо объясняется, но поначалу разбирался с алгоритмом решения задачи. 
Комментарии: Рекомендую всем, кто проходит данный курс, обратить внимание на предложенное в видеоуроке рекурсивное решение второй задачи, "пропустить через себя", разобраться от начала до конца, понять ход оптимизации. Емкий алгоритм, три массива неплохо закручены между собой, и каждая строчка кода несет много смысла. 
16 Комбинаторика. Математические операции 00:22:34 40 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 2 час. 30 мин. [Показать отчёт]
Научился: Повторил работу с рекурсией, неплохо закрепил полученные навыки во время создания класса калькулятора. 
Сложности: Реализовать свой класс калькулятора. 
Комментарии: Калькулятор реализовал с использованием грамматики(на втором скриншоте слева): Expression отвечает за вычисление суммы/разности, Term - произведение, Number - составление числа из цифр, разделенных пробелами. Все операции левоассоциативны, приоритеты реализованы с помощью рекурсивных вызовов функций Term, Number. 
17 Полуфинальный урок. Ответы на вопросы 37 чел. ★ 4.8 Done
  Отчёт отправил: 7276. Ильшат Решено за 20 мин. [Показать отчёт]
Научился: Освежил в памяти изученные алгоритмы по курсу Комбинаторика. 
Сложности: Написать отзыв. 
Комментарии: 1. Какой алгоритм тебе больше всего понравился? Трудно выделить какой-то конкретный алгоритм, все понравились. Наибольшее впечатление произвел алгоритм заливки области, благодаря тому уроку стал лучше понимать рекурсию. 2. Оправдались ли твои ожидания от участия в этом курсе? Да, несомненно. С первых дней на проекте я выделял этот курс среди остальных, так как рассматриваемые темы относятся к классике программирования и требуют необходимого погружения и понимания, в отличие от изучения новых технологий, где программист просто "дергает за ниточки фреймворков". На данный момент, для меня это самый полезный курс на проекте, наравне с "Сокобаном". 3. Выскажи свои замечания и пожелания по этому курсу. Замечаний нет, в качестве пожеланий необходимо расширение курса: новые примеры, темы, задачи. Это позволит лучше закрепить полученные знания. 4. Что в этом курсе оказалось самым ценным и полезным для тебя? Самым ценным и полезным была практика, сами задачи, варианты их решения с помощью перебора, рекурсии. Так же ценным было знакомство с некоторыми приемами оптимизации кода. 5. С уважением, Ильшат. Спасибо за уроки) 
18 Динамика. Поле дураков 00:18:40 38 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 35 мин. [Показать отчёт]
Научился: Познакомился с динамическим программированием. 
Сложности: Сложностей не было. 
Комментарии: Понравился метод решения задачи, наглядно и понятно. Большой плюс в том, что для пояснения был использован Excel для пошаговой демонстрации алгоритма. 
19 Динамика. Счастливые билеты 20 00:58:04 35 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 3 час. 10 мин. [Показать отчёт]
Научился: Увидел применение динамического программирования для решения задачи поиска счастливых билетов. 
Сложности: Разобраться в алгоритме поиска счастливых билетов, а конкретнее, переход от N к N + 1. 
Комментарии: Очень достойный урок, просмотрел его дважды, прежде чем понял всю суть. Наглядно показано, как использование другого алгоритма в несколько раз повышает скорость работы программы. 
20 Динамика. Выход из Лабиринта 00:59:02 34 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Повторил работу с очередью Queue, поиском в ширину в графе. 
Сложности: Сложностей не было. 
Комментарии: Данную тему ранее проходил в курсе Сокобан, здесь было повторение и закрепление. 
21 ФИНАЛЬНЫЙ УРОК 00:23:23 23 чел. ★ 4.9 Done
  Отчёт отправил: 7276. Ильшат Решено за 25 мин. [Показать отчёт]
Научился: Повторил создание видео обзоров. 
Сложности: Кратко рассказать про программу заливки области. 
Комментарии: Курс очень понравился, спасибо, Евгений Витольдович :) 
Видеообзор: https://youtu.be/GHR7oY-HHpM
22 VIP. Простые числа. Оптимизация алгоритма 01:19:28 31 чел. ★ 5 Done
  Отчёт отправил: 7276. Ильшат Решено за 3 час. 10 мин. [Показать отчёт]
Научился: Практиковался с алгоритмами поиска простых чисел, реализовал "решето Эратосфена", повторил работу с модульными тестами. 
Сложности: Сложностей не было, в основном мелкие ошибки типов данных и границ поиска. 
Комментарии: Проверку функций реализовал с помощью модульных тестов библиотеки boost. Опробовал создание функций isPrime* через некое подобие TDD. Поначалу было трудно привыкнуть, но в итоге понравилось, больше уверенности в работоспособности своего кода. Выполнил проверку скорости работы функций, как было предложено в уроке, за определенное время: странно, функция isPrimeSqrtP оказалась медленнее, чем ожидалось. Реализовал алгоритм "решето Эратосфена", для ее проверки выбрал другой способ: задаю максимальное число и засекаю время выполнения функций. Результат удивил, алгоритм Эратосфена и isPrimeSqrtP проиграли по времени isPrimeSqrt3. При бОльших границах интервала поиска отставание уменьшается, я полагаю проблема в реализации алгоритма. Урок понравился, поработал с консолью, тестами, оптимизацией, реализацией алгоритма. Спасибо!:) 
  Итого:   22 видеоурока общей продолжительностью 9 час. 57 мин. 17 чел. ★ 4.95  
  Финалисты:   Елена,   alexmail19Q,   Максим Лапшинов,   Андрей Поляков,   Vera,   Иван,   Артём,   Tekashnik,   Михаил Ермишин,   Николай,   Alcatraz,   Denchik,   Дмитрий,   Иван Воронин,   Ильшат,   Алексей В.,   Новопашин Владимир .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: ничему новому
Трудности: найти время
подробнее в видео
Смотреть видеозапись: https://www.youtube.com/watch?v=W8NnZHxfKCk
Научился: Делать видео обзор программ.
Трудности: Сделать видео обзор программ.
Видео без записи голоса.
Смотреть видеозапись: http://youtu.be/nXu1GN8ZWXA