C# обучение сайт

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

основатель — Волосатов Евгений Витольдович
Open shop Бинарная жизнь

Бинарная жизнь

Мы поиграем в философию/психологию
на примере упрощения нашей жизни
до конечных бинарных автоматов
на примере наблюдения за
эволюцией бинарных
организмов :~)

4 урока, 56 минут.

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

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Правила игры 00:19:08
93 чел. ★ 4.9 Done
 
Посвящается Музе нашего проекта

На этом уроке мы поиграем в философию/психологию
на примере упрощения нашей жизни
до конечных бинарных автоматов.
Отчёт отправил: 20071. New programist Выполнено за 4 час. 29 мин. [Показать отчёт]
Научился: ________________________________________________________________________________________ Конспект про простейшие клеточные автоматы (Elementary cellular automaton):  | _______________________________________________________________________________________|                                                                      1) Простейшие клеточные автоматы используются в криптографии, моделировании физических процессов, поведения людей, в биологии, и так далее; 2) Клеточный автомат - дискретная модель, представляющая собой сетку произвольной размерности, каждая клетка которой в каждый момент времени может принимать одно из конечного множества состояний, и определено правило перехода клеток из одного состояния в другое. Примеры: «Жизнь» Конуэя, Автомат Фон Неймана, Wireworld, Модель сегрегации Шеллинга; 3) Клеточные автоматы бывают: а) в зависимости от размерности решетки: одно-, дву-, трёхмерные, и т.д. Например, Правило 110 — одномерные, «Жизнь» — двумерная; б) в зависимости от количества возможных состояний: бинарные, троичные, и т.д; в) по типам поведения. 4) Простейший клеточный автомат - одномерный бинарный (с двумя возможными состояниями) клеточный автомат, где состояние клетки в каждый момент времени зависит только от её собственного состояния и состояний смежных с ней клеток в предыдущий момент времени. Всего их 256. Для удобства их называют числами от 0 до 256 (0...256), теперь их называют "кодом Вольфрама"; 5) Что означают коды Вольфрама: Возьмём номер правила, например, 110. 1. 110(10) = 01101110(2) 2.Впишем цифры двоичного представления числа в таблицу:    _____________ _____________ _____________ _____________ |111  |110  |101  |  100 |  011 |  010 |  001|  000 | |______|______|______|______|______|______|______|______|  |0   | 1    |1       | 0      | 1 |1     | 1    |  0    | |______|______|______|______|______|______|______|______| В зависимости от состояний соседа слева, самой клетки и соседа справа (первая строка таблицы) на следующем шаге клетка примет одно из состояний, указанных во второй строке. Еще более наглядно это можно представить так: 0 - заполнен - не заполнен 000    00-    0-0    0--    -00    -0-    --0    ---   -      0        0      -        0      0      0      -    6) Вольфрам разделил клеточные автоматы на четыре класса по типу поведения:     1 класс: все клетки быстро принимают одинаковое состояние, которое становится     стабильным. Например, Правило 40;     2 класс: состояние всех клеток быстро стабилизируется, либо возникают     периодические колебания. Например, Правила 3 и 33;     3 класс: автомат порождает хаотические, непериодические структуры. Небольшие     изменения исходного состояния влекут значительные изменения в результате. Например, правило 22; 4 класс: автомат порождает сложные, взаимодействующие между собой структуры, способные выживать длительное время, однако не достигает стабильности. Например, правило 193. Узнал про следующие правила клеточных автоматов (или простейших клеточных автоматов): а) правило 110 - состояние между хаосом и спокойствием (между 0 и 1); б) правило 30 - порождаемые им результаты хаотичны, то есть, незначительное изменение в начальных условиях оказывает значительное влияние на порождаемые результаты; в) клеточные автоматы (правила 18, 22, 126, 161, 182, 218, так далее.), которые, развиваясь из одной точки, порождают фрактальные изображения; г) ВАЖНО: Для того, чтобы избежать «краевого эффекта», то есть, влияния границ на пограничные клетки, нужно замкнуть автомат в кольцо, т.е. сделать крайнюю левую клетку правым соседом крайней правой, и наоборот; д) правило 184: - После каждого шага количество «живых» клеток остается неизменным; - Правило в зависимости от исходного состояния может вести себя   как правило класса 2 или 4; - Чем меньше «живых» клеток в исходном состоянии, тем быстрее   автомат стабилизируется. ____________________________________________________________________________________________________________ Данный видеоурок вдохновил меня на изучение дискретной математики и появилось осознание того зачем нужна дискретная математика. Прочитав статью про простейшие клеточные автоматы выяснил, что дискретная математика это не просто предмет для изучения, это еще и красота чисел с помощью которых можно нарисовать красивые фигуры. Благодаря автору данного видеоурока я вдохновился изучением дискретной математики и осознание того зачем она нужна, что замотивировало меня на дальнейшее изучение дискретной математики. Повторил дискретную математику, особенно составление таблиц истинности. Сделал краткий конспект статьи про простейшие клеточные автоматы. 
Сложности: Найти время. 
2 Конструктор организма 00:13:09
91 чел. ★ 4.9 Done
  На этом уроке мы начнём создавать консольную программу для имитации жизни конечного бинарного автомата.
Создадим класс Logic и напишем методы инициализации с отображением.
Отчёт отправил: 20071. New programist Выполнено за 40 мин. [Показать отчёт]
Научился: Создал коркас программы для дальнейшего его улучшения. Пока улучшений своих к ней никак не придумаю. Повторил циклы, узнал про StringBuilder и Append. Узнал, что если задать буфер, то программа будет работать быстрее (я так понимаю если в скобочках задать что-то, то будет работать быстрее). Потренировался в создании классов и применении его в других классах. 
Сложности: Так и не понял что означает вопросительный знак в функции Life: public string Life()         {             StringBuilder sb = new StringBuilder(size);             for (int j = 0; j < size; j++)                 sb.Append(arr[j] ? "#" : ".");            <------------------- вот тута             return sb.ToString();         } 
3 Новое поколение 00:17:56
1 тест
82 чел. ★ 4.9 Done
  На этом уроке мы допишем класс логики
нашего конечного бинарного автомата
и опробуем его в деле - запустим
и посмотрим, как он работает.
Отчёт отправил: 20071. New programist Выполнено за 53 мин. [Показать отчёт]
Научился: Реализовал функцию Next: public void Next()         {             bool[] next_arr = new bool[size];             for(int j = 0; j < size; j++)             {                 int cat = 4 * (arr[(j - 1 + size) % size] ? 1 : 0) +                     2 * (arr[(j)                        ] ? 1 : 0) +                     1 * (arr[(j + 1) % size            ] ? 1 : 0);                 next_arr[j] = rule[cat];             }             for (int j = 0; j < size; j++)                 arr[j] = next_arr[j];         }     Как по моим догадкам эта функция действует так: составляем числа из заданного порядка (массива) в двоичной СС. Нам дана группа чисел из массива, по которым составляем числа и сравниваем их с заданной таблицей массива есть ли они или нет их (см. таблицу двоичного кода). Т.е. если есть то значок решетка, если нет то символ точки. Таким образом получается треугольник Сапинского.  Я так понимаю, что эта функция реализовывается по таблице двоичных чисел, запирающиеся в массив и сравниваются до тех пор. пока не получится изображение.     Самая красивая консольная программа, которую я создал по данному видеоуроку. Глядя на такую красоту хочется еще и еще что-нибудь создать. Двоичные числа и дискретная математика творят чудеса! Еще появилось больше мотивации изучать дискретную математику.  
Сложности: Были некоторые сложности при понимании функции Next, но если начинать листать код одновременно разбираясь в нем и читая его, то будет понятно что из чего растет. А так таких больших сложностей не возникало.  
4 Смысл жизни 00:25:36
78 чел. ★ 5 Done
  На этом уроке мы ещё немного пофилософствуем,
проведём аналогию бинарного линейного существа
с нашей жизнью, повысим ему осознанность,
попробуем предугадать его будущее,
научим его менять свои привычки
и покажем - в чём смысл жизни.

P.S. Рекомендую посмотреть фильм "Changing Lane".
Отчёт отправил: 20071. New programist Выполнено за 1 час. 14 мин. [Показать отчёт]
Научился: Создал 2 функции  Change и ChangeRule, поэкспрементировал со значениями в Program.cs.     Предмет философия нужно изучать каждому, независимо от специальностей и профессий, ведь этот предмет открывает глаза на то, какие проблемы стоят перед человеком; дает осознанности своих действий; повышает мудрость; учит ценить то, что есть; открывает ответы на некоторые волнующие вопросы; учит задавать вопросы; расширяет кругозор и познание мира, также помогает найти свое место в жизни. Философия - учит понимать мир. Психология - учит понимать себя и других людей. Жизнь - учит ценить время. А время - учит ценить жизнь.     Никому не секрет, что для достижения успеха нужно просто не сдаваться, а именно вставать каждый раз, когда падаешь. Да, это тяжело, но только так побеждают, кроме трудного пути к счастью нет никаких. Главное верить, главное вдохновлять, главное любить. (Л.Н.Толстой). 
Сложности: Ничего. 
5 ФИНАЛЬНЫЙ УРОК без видео
2 теста
66 чел. ★ 4.9 Done
  Поздравляю с завершением этого миникурса.
Напиши, что ты понял о смысле жизни после прохождения этого курса.

Какой курс ты будешь проходить следующим?

Впереди тебя ждёт ещё один урок, "Игра жизнь".
Отчёт отправил: 20071. New programist Выполнено за 44 мин. [Показать отчёт]
Научился:     Проходя данный видеокурс было очень приятно совместить приятное с полезным, а именно философию и программирование. Философия. как и история - учитель жизни. Поэтому крайне важно учитывать ошибки прошлого и не повторять их в будущем. Ну а смысл жизни: не в том, чтобы родиться, состариться и умереть, а именно в том, чтобы творить, вдохновлять, изменять, передавать. Пределу совершенства нет. Данный видеокурс меня вдохновил на изучение дискретной математики, и снова перечитать книгу по философии.     Стоит отметить, отличия обычного человека и человека успешного в том, как он мыслит. Мысли определяют наши действия, и как упомянул автор данного видеокурса: наши действия и мысли материальны. Сегодня - это ваше завтра. Поэтому, чтобы не было обидно за свои последние дела, лучше ценить каждый миг и использовать их с пользой, ведь всегда что-то происходит не бывает пустых моментов. Нужно повышать осознанность, задавая себе много вопросов. Кому будет интересно посмотрите кино "Мирный воин" очень хорошо заставляет задуматься над тем, что мы делаем.     Желание пройти видеокурс "База данных - управление гостиницей никуда не пропало". Приведу еще несколько цитат, надуюсь хоть как-нибудь вдохновят:       1) Живи в ладу с собой и будь самим собой, если находишься в депрессии значит ты живешь в прошлом, если встревожен значит живешь в будущем;       2) Живи тем, что есть, Помни то, что было, И верь в то, что будет. Не позволяй прошлому и будущему портить твою жизнь;       3) Каждый человек обязан измениться, перемены в мире зависят от изменения отдельных людей;       4) Каждая мысль создает наше будущее;       5) Тот, кто мыслит позитивно имеет решение для любой проблемы. Тот, кто мыслит негативно имеет проблемы в каждом решении;       6) Качество жизни, определяется качеством мыслей;       7) Умный не то кто знает многое, а тот, кто знает самое необходимое. 
Сложности: Ничего. 
6 Максималка 00:11:02
45 чел. ★ 4.9 Done
  На этом уроке вы привьёте себе один навык,
в качестве эксперимента, чтобы увидеть и прочувствовать, как это повлияет на вашу жизнь.

На этом уроке я попрошу вас запомнить одно число.
Но запомнить его должна не голова, а рука.

Первый подход:
https://www.videosharp.info/console/task/level=1730

Второй подход:
https://www.videosharp.info/console/task/level=1731

Набирайте число на цифровой клавиатуре, пока не почувствуете,
что число набирается автоматически, без участия мыслей.

Рекомендую набрать это число 500 раз.
У меня на это ушло 45 минут.
Отчёт отправил: 20071. New programist Выполнено за 40 мин. [Показать отчёт]
Научился: При первом наборе числа 2147483647 было все норма, но при наборе 500 раз - это уже нечто. Когда набирал это число 2147483647 (ухты даже запонмил не задумываясь), все прошло очень быстро, а уже под конец чёто пошло очень медленно. В общем, это хорошее упражнение для запоминания символов. 
Сложности: Набрать число 500 раз, и на этом чтобы не завис результат.  
7 VIP урок. Игра Жизнь 01:22:45
60 чел. ★ 5 Done
  Я познакомился с этой игрой в дестве, когда даже компьютеров не было, играть в неё можно было только на листке бумаги в клетку. На уроке я расскажу правила игры, потом мы создадим класс по реализации логики игры, затем, используя метод динамического программирования, я покажу, как можно в 10 разу ускорить расчёт нового поколения (это по желанию), и, под конец, подключив созданный класс мы напишем саму игру.

Продолжительность урока 1 час 22 минуты,
Это программа - отличный тренажёр для начинающих программистов и хорошая программа в копилку вашего портфолио.
Отчёт отправил: 20071. New programist Выполнено за 3 час. 43 мин. [Показать отчёт]
Научился: Узнал про игру жизнь и как в нее играть. Правила игры "Жизнь": 1) Есть клетки, в которых существуют организмы и есть пустые клетки, в которых ничего нет; 2) В пустой клетке может появиться организм, если вокруг клетки ровно 3 организма; 3) Организм переходит в следующее поколение, если вокруг него 2 или 3 организма; 4) Если вокруг организма только 1 или больше 3, то он погибает. ======================================================================================     Узнал, как реализовать игру "Жизнь" в программном варианте; узнал, как сделать оптимизированный алгоритм динамическим программированием; повторил написание программ в VisualStudio. 
Сложности:     Были непонятные функции, было немного сложно вникать, но со временем адаптировался, более менее понял, но смысл всей программы и всех функций понял. 
  Итого:   7 видеоуроков 2 час. 49 мин.
3 теста
31 чел. ★ 4.93  
  Финалисты:   Иван Воронин,   Алексей В.,   Новопашин Владимир,   Denis,   Tekashnik,   Максим Лапшинов,   Николай Денисов,   vip,   Den Andreevich,   Антон Лазарец,   Yefim,   Фомичева Наталья,   Dmitry Sinitsin,   Александр,   Permitin Alexey,   superGrover,   Денис,   LINKI,   New programist,   Діма,   Алексей|BrisK|Кривицкий,   Кирилл,   Дмитрий,   Яков,   Степан,   Anatoli,   Shahlo,   Tim,   София,   Татьяна,   MaxB .

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





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

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

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

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


Научился: Жизнь не полная попа! Менять надо себя и свои привычки, а не окружающие тебя вещи.
Всё отлично


Научился: На примере клеточных автоматов автор продемонстрировал то, к чему я пришел пару лет назад. Изложенный подход, подкрепленный веселым алгоритмом, в очередной раз укрепил меня в правильности сделанного выбора. Каждый из нас (хотя лучше буду говорить за себя) сам несет ответственность своими поступками за то - кто он, где находится и что из себя представляет. Осознав этот поистине удивительный факт я успокоился и перестал волноваться за будущее. Вся ненужная шелуха в момент облетела и я остался один на один с интереснейшей дорогой к своей цели. И теперь я радуюсь каждому новому дню и очередной возможности сделать несколько шагов в выбранном направлении. Мне кажется это очень похоже на счастье)))))))))))
Спасибо большое за экспресс-курс! Жду продолжения!