Курсы для программистов

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Вступление 00:05:08
1 тест
43 чел. ★ 5 Done
  Мы начинаем серию видеоуроков по созданию алгоритма решения головоломки Судоку.

Ваша задача -
разобраться с правилами этой игры.
найти/распечатать бумажное (!) Судоку.
Решить его ручкой или карандашом.
Сфоткать решение и приложить к отчёту.
Отчёт отправил: 986. Антон Лазарец Выполнено за 44 мин. [Показать отчёт]
Научился: Судоку уже давно умею решать, ооочень интересно иногда бывает, особенно если попадаются задачки на сложные схемы, на андроид даже нашел апликуху, с пошаговым решением и выбором оперделенных стратегий из множества + гайды, иногда помогает расшевелить мозги 
2 Сетка для цифр 00:16:08
1 тест
37 чел. ★ 5 Done
  На этом уроке мы создадим класс Sudoku,
опишем в нём две константы и создадим
функцию для отображения сетки для цифр.
Отчёт отправил: 986. Антон Лазарец Выполнено за 2 час. 34 мин. [Показать отчёт]
Научился: оказалось, что в java нельзя установить курсор в нужное положение - пришел к солюшену с очисткой консоли перед отрисовкой сетки, и модифицировал square чтобы считалось относительно size - можно избежать изменения двух переменных, достаточно просто поменять size и square подстроиться, и еще добавил интерфейс Painter с целью отделить логику отрисовки, хочу дальше запилить версию с UI 
3 Печать цифр в таблице 00:17:57
36 чел. ★ 5 Done
  На этом уроке мы добавим метод для добавления цифр в наш Судоку.
Также напишем функцию для отображения цифр в консольном экране.
И свяжем их через использование делегата.
В конце урока заполним наше поле случайнмыи цифрами.
Отчёт отправил: 986. Антон Лазарец Выполнено за 13 час. 14 мин. [Показать отчёт]
Научился: ооочень давно писал в c# поэтому не помню наверняка, но похоже, что делегат это просто ссылка на функцию, я джава такое можно лямбдами делать сейчас, и js вообще можно переменной фукнцию присвоить и делать чё хочь. но я сделал через observable - имхо так более логично, т.к. класс sudoku, который занимается логикой становиться перегруженным, если он еще и отрисовку будет дергать. и заюзал библиотеку lanterna для работы с gui console, потому что работать с координатами в виндовой - это кошмар, а тут всё просто и прикольно выглядит, правда шрифт такой себе  
4 Проверка правил игры 00:13:23
1 тест
35 чел. ★ 5 Done
  На этом уроке мы наконец-таки начнём писать алгоритм.
В метод PlaceDigit() мы запрограммируем проверку правил игры.
Числа должны быть из верного диапозона, они не должны
повторяться в строчке, в столбце и в квадрате.
Под занавес мы сгенирируем случайную матрицу по всем правилам судоку.
Не факт, что её можно будет решить, и что решение будет единственным.
Отчёт отправил: 986. Антон Лазарец Выполнено за 1 час. 18 мин. [Показать отчёт]
Научился: ничего нового, полистал немного документацию по lanterna  - хотел поиграться со шрифтами, достаточно скудная в этом отношении либа, но то, что от неё требуется - выполняет хорошо. а есть какие то курсы на портале по работе с координатами и игровой матетатикой? хотел бы научиться на интуитивном уровне манипулировать с цифрами для геймдева ^^ 
5 Загрузка головоломки с интернета 00:25:44
1 тест
33 чел. ★ 4.9 Done
  На этом уроке мы напишем функцию для загрузки Судоку с интернет-сайта.
Через буфер обмена содержимое страницы будет размещено в текстовом файле.
Алгоритм будет его анализировать и добавлять в матрицу класса Sudoku.

Отчёт отправил: 986. Антон Лазарец Выполнено за 2 дня 20 час. 37 мин. [Показать отчёт]
Научился: не стал работать с файлом, нашел сайт sudoku.becher-sundstroem.de - тоже генерирует судоку, но можно вытаскивать только строку непосредственно с самой судоку + решением при обращении на нужную урлу. не люблю ручную работу (копирование\вставка не моё) и решил полностью автоматизировать. Был интересный момент с отсутсвием session cookie - посмотрел, как сторить их в программе - всё заработало ^^ 
6 Идея алгоритма - 81 цикл 00:11:48
32 чел. ★ 4.9 Done
  На этом уроке мы вручную проработаем алгоритм
поиска в глубь с возвращением.
Твоя задача - не аналитически решить судоку,
а программно, применяя описанный на уроке алгоритм.
Отчёт отправил: 986. Антон Лазарец Выполнено за 46 мин. [Показать отчёт]
Научился: алгоритм в лоб :D надеюсь, что stackoverflow не будет вылетать) кажется довольно простым  
7 Рекурсивная функция поиска 00:25:24
1 тест
29 чел. ★ 5 Done
  На этом уроке мы напишем рекурсивную функцию NextDigit(),
которая и будет заниматься поиском решения головоломки.

Способы оптимизации алгоритма поиска решения:
https://habrahabr.ru/post/173795/
Отчёт отправил: 986. Антон Лазарец Выполнено за 4 дня 2 час. 51 мин. [Показать отчёт]
Научился: Пытался написать рекурсивную формулу сам, запилил все проверки выхода и завершения, начал писать алгоритм, но что-то сломался и посмотрел видео. буду искать курс по развитию этой стороны себя (комбинаторика много раз упоминалась в видео, наверное она будет следующей и скорее всего еще буду листать алгоритмы время от времени) Время поиска решения ооочень варьируется, сейчас вот простой ищет уже пару минут, а до этого секунд 10 заняло (с задержкой для анимации) и результат не сохранятеся) когда решение найдено - рекурсия просто разворачивается и поле девственно пусто 
8 Сохранение ответа 00:07:28
1 тест
29 чел. ★ 5 Done
  На этом уроке мы напишем функцию для сохранения решения головоломки в текстовый файл.
Отчёт отправил: 986. Антон Лазарец Выполнено за 11 дней 17 час. 39 мин. [Показать отчёт]
Научился: Переделал логику взаимодействия классов между собой, воспользовался либой quava а именно EventBus'ом. Разделил обязанности классов. Теперь SudokuSolver (он же Sudoku в видео) отвечает только за решение судоку, которая передается параметром. При изменении любого значения поле судоку (вынес в отдельный класс) генерирует event изменения клетки, который прослушивается отрисовщиком (у меня рисует только в терминал, но с таким подходом можно куда угодно вещать), и SudokuSolver в свою очередь выстреливает event окончания решения, который прослушивается экспортерами (экспортит в консоль и в файл). В итоге получились компактные слабосвязанные классы, писал взахлеб, ооочень интересно 
Сложности: Решиться переделать на манер, к которому душа лежала, ну и попробовать новое (на удивление guava eventbus оказался крайне простым в использовании) 
9 Генерация головоломок 00:15:25
25 чел. ★ 5 Done
  На этом уроке мы напишем алгоритм для формирования
Судоку-головоломок, поэкспериментируем с генератором случайных полей.
Отчёт отправил: 986. Антон Лазарец Выполнено за 1 день 2 час. 21 мин. [Показать отчёт]
Научился: еще чуть-чуть переделал структуру. перенес вообще все манипулации с полем внутрь класса, отвечающего за поле, а solver только вызывает нужные методы класса. для рандома создал новый класс провайдера и в стартовой точке достаточно просто поменять реализацию для изменения стратегии получения судоку. но метод генерации какой то сильно в лоб и не гарантирует генерацию поля. если выставить 80 символов то можно вечность ждать, а он всё равно не придумает нужное поле. было бы прикольно, если бы мы создали какой-то универсальный метод, но это вне скоупа данного курса, насколько я понял. всё равно круто) 
10 ФИНАЛЬНЫЙ УРОК без видео
17 чел. ★ 4.9 Open
  Поздравляю с завершением этого видеокурса!
Запиши и опубликуй видеообзор созданной программы.
Напиши, какой курс будешь проходить следующим.
11 VIP. Модульное тестирование 00:36:07
15 чел. ★ 5 $
  На этом уроке мы познакомимся с модульным тестированием.
Мы напишем небольшой калькулятор, в который добавим
проект для модульного тестирования, и покажем,
как это всё работает, как это нужно использовать.
  Итого:   11 видеоуроков 2 час. 54 мин.
6 тестов
15 чел. ★ 4.98  
  Финалисты:   zhikharevav,   Максим,   Новопашин Владимир,   Максим Лапшинов,   Волнухин Владимир,   Tekashnik,   Александр,   Николай Денисов,   Иван,   no name,   Александр,   Anatoli,   Freud,   Татьяна,   MaxB .

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Решать и сохранять решение Sudoku. Следующий курс, я заметил что еще комбинаторику до конца не прошёл.



Научился: Находить время и желание.
Трудности: Пока не решил за что взяться. Разбегаются глаза.. Спасибо за курс. Забыл сказать на видео, что еще стал яснее себе представил место делегатов в общем смысле программирования.