Си шарп с нуля

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

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Orange
  • Звание: Делегатор
  • Накопленный опыт: 221 час
  • Баланс Мегахешей: собрано 0 Mh, потрачено 0 Mh
  • Баланс Байтов: нет
  • Не состоит в «Клубе формулистов»
  • Последний визит: 2018-09-30 19:45:14
  • Возраст: 48 лет

Видеокурсы

Дата активности Видеокурс Прогресс
2016-06-04 java-start J1. Запуск 3 из 4 75 %
2016-06-04 java-write J2. Печать 1 из 3 34 %
2015-08-09 sokoban Сокобан 2 из 23 9 %
2014-10-29 task3 Комбинаторика 1 из 22 5 %
Итого: 7 из 52 14 %

Консольные задачи

Дата активности Консольный раздел Прогресс
2018-09-13 olimp Олимпиада 20 из 40 50 %
2018-09-13 solo YESOLO on the Keyboard 6 из 0 %
2016-01-07 task1 Целые задачи все 11 100 %
2015-02-25 task1 Цифры 11 из 12 92 %
2015-02-19 task1 Лирика 12 из 14 86 %
2014-12-06 task2 For-to-чки 16 из 26 62 %
2014-11-26 task2 Динамика все 3 100 %
2014-11-26 task2 Комбинаторика все 9 100 %
2014-11-25 task2 Рекурсия все 4 100 %
2014-11-25 task2 Алгоритмика 9 из 20 45 %
2014-11-25 task2 Подпрограммы все 14 100 %
2014-11-25 task2 Логика 3 из 13 24 %
2014-11-25 task2 Последовательность 2 из 6 34 %
2014-11-24 task2 Условный оператор 9 из 16 57 %
2014-11-24 task2 Матрёшки 1 из 9 12 %
2014-11-24 task2 Математика 1 из 9 12 %
2014-11-24 task1 Строки все 14 100 %
2014-11-24 task2 Обман цикла 1 из 7 15 %
2014-11-24 task6 For-to-Цикл все 12 100 %
2014-11-24 task2 Строки 1 из 6 17 %
2014-11-24 task2 Пока-цикл 2 из 6 34 %
2014-11-24 task2 Любимые циклы 1 из 6 17 %
2014-11-24 task2 Узник цикла IF 5 из 6 84 %
2014-11-23 task1 Символы все 5 100 %
2014-11-23 task1 Календарь 1 из 16 7 %
2014-11-23 task1 Формулы все 9 100 %
2014-11-23 z Вещественные числа все 1 100 %
2014-11-23 task1 Геометрия все 8 100 %
2014-11-19 task1 Целые числа все 7 100 %
2014-10-22 task1 Семантика все 6 100 %
Итого: 204 из 315 65 %
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # Консоль / Олимпиада / Простой ряд чисел / 2018-09-21 17:36

Не надо так делать


2775. --
Orange
Orange
ответить
# Консоль / Олимпиада / Факториалы / 2018-09-21 17:34

E3250! как то слишком жестко


2775. --
Orange
Orange
ответить
# Консоль / Олимпиада / Ширина сарая / 2017-09-27 20:21

на самом деле это самая сложная часть, так как нужно определить ширину сарая в каждой клетке за 2 прохода по строке.
один проход для всех левых границ и один для всех правых.
и для этого нужно использовать стек.
если же решать в лоб, то в поле 10000 x 10000 итоговая программа будет работать очень медленно.


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # Консоль / Олимпиада / Большой сарай / 2017-09-13 19:09

Верно. Нужно будет исправить.


2775. --
Orange
Orange
ответить
# Консоль / Олимпиада / Большой сарай / 2017-09-13 16:39

Не совсем точное описание:
"Далее на T строчках вводится координаты построек, по два числа X Y, каждое от 0 до 10000."
на самом деле задается Y X судя по картинке с примером.


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange   / 2017-06-25 00:23

Классное решение!


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange   / 2017-06-25 00:22

Классное решение!


4004. --
Елена
Елена
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-28 05:22

Хорошие советы, Orange. Жалко, что поздно их увидела. Возможно, это помогло бы моему боту "набраться силы" :)


10494. --
Алексей В.
Алексей В.
ответить

7119. --
Новопашин Владимир
Новопашин Владимир
ответить

10558. --
Иван Воронин
Иван Воронин
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-27 04:38

Хорошие советы, пригодятся в будущем =)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-26 22:10

Сделать игрока с функцией:
public int GetMove(...) => int.Parse(Console.ReadLine());
и можно тогда делать ходы ручным вводом, возможно действительно стоило об этом упомянуть в видео.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-26 22:01

1, 2 - Для этого есть этот урок - можно вместо второго игрока запрашивать ввод с консоли.
Советы хороши, но, как говорится... да много как говорится, поговорок подходящих много.
Первый блин - комом. Одна голова хорошо, а две - лучше. Ложка хороша к обеду. И т.д.
3 - Здесь - да и с этим ничего не поделать.
То что сложно - да, поэтому особо не углублялся, лишь старался показать минимальный код, который позволит протестировать свою dll.
Комментарий дельный и полезный. Спасибо!


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-26 20:47

Спасибо за дельные советы. Надеюсь, Андрей найдёт их для себя полезными.


2775. --
Orange
Orange
ответить
/ 2016-11-19 01:25

1. Женя, реально нет времени, когда дедлайн суббота или воскресенье и во сколько?
2. Андрей, стоило бы добавить в видео как дебажить dll, когда есть только внешняя прога, это не сложно, но для новичков может быть проблемой. Судя по количеству участников.
3. Конечно полный перебор не вариант, с учетом запрещенных позиций и симметрии их все равно очень много, но, уже в 1988 году нашли решение, например, Victor Allis не только прогу написал, но и целую диссертацию по этому поводу, и хотя там всего 9 правил, разбираться с ними времени нет, это реально очень долго.


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-18 10:09

Зачем тогда записался на этот курс, если нет времени разбираться?


9263. --
Андрей Н.
Андрей Н.
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-18 07:30

Зы. Создание арены и ИИ к ней - это ну очень разные вещи, но с другой стороны, да, как минимум у меня должны быть временные преимущества, поэтому для себя я решил не участвовать в соревновании, либо если все-таки что-то у меня будет - все конкурса


9263. --
Андрей Н.
Андрей Н.
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-18 07:26

О временных ограничениях я сначала думал, но потом решил от них уйти, так как непонятно сколько ставить - поставить 1 секунду, кому-то может вполне не хватить, поставить - больше? сколько тогда? 5? 10? 60?
С другой стороны, кто-то может впихнуть в своего бота бесконечный цикл, но я для себя решил, что таких мы просто вручную отсеим на предварительном этапе.
Чтобы посмотреть заголовок класса, метода, перечисления и прочего - нужно нажать F12, забыл сказать об это на видео, наверное.
По поводу того, то первый игрок всегда выигрывает - для человека может быть гораздо проще, а вот в коде это реализовать... Тут ведь даже мат конем и слоном покажется детским лепетом, здесь всего число комбинаций на доске ограничено сверху величиной 127^7 = 5.3*10^14 и в каждом случае до 7 вариантов хода, такое количество не то что перебрать во время игры, так даже заочно перебрать и составить словарь не предоставляется возможным - он будет занимать более 3 ПБ


10558. --
Иван Воронин
Иван Воронин
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-18 02:03

Автор участвовать не будет, так что можешь не переживать, временных отрезков нет, по поводу 1000 боёв, я думаю ограничимся 120+-


2775. --
Orange
Orange
ответить
# C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-18 00:54

Еще не указано временные ограничения на ход.
Если будет допустим 1 секунда на ход, и в среднем 20 ходов за партию, то для проверки 1000 игр каждым цветом только для двух участников займет более 11 часов.


7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Хочу играть! / 2016-11-15 09:42

А почему одна звездочка?


10558. --
Иван Воронин
Иван Воронин
ответить
→  Orange  # C# Четыре в ряд - Соревнование / Хочу играть! / 2016-11-15 03:39

Следующим уроком сразу ссылка на задачу =)



24. --
Олюшка
Олюшка
ответить
→  Orange  # Игра Сокобан / Сокобан - Подготовка - Картинки и лабиринт / 2015-08-09 15:02

Мне нравится твоя подготовка, очень позитивно и сочно, уверена это будет классно смотреться и весело играть! :)


24. --
Олюшка
Олюшка
ответить
→  Orange  # Игра Сокобан / Сокобан - Вступление / 2015-08-09 11:18

Потрясающе, вот что значит настоящий программист с подходом программиста решения задачи!!!
Я в восторге и под впечатлением от твоей работа,  очень стимулирует и мотивирует! Молодец! :)


2775. --
Orange
Orange
ответить
# Игра Сокобан / Сокобан - Вступление / 2015-08-09 09:19

С ростом числа кубиков количество вариантов возрастает в геометрической прогрессии.
Так если для поля 10x10 с 1 кубиком достаточно хранить 100 позиций для игрока Х 100 позиций для кубика, всего то 10 000 вариантов, то для 10 кубиков вариантов уже сильно больше:
100 * 100^10 = 100^11 = 10 000 000 000 000 000 000 000.

О, и решение для 3й олимпиадной задачи («Большая степень») пригодилось, а я то думал куда его можно применить :)

В общем, нужно разными способами по максимуму сокращать количество ненужных вариантов.
Например, хранить только карты после движения кубика, а локальные, когда игрок бегает и не двигает кубики можно сбрасывать.
Заранее помечать точки куда кубик ставить нельзя, а также динамически проверять тупиковые ситуации.
Использовать сигнатуры для быстрого поиска среди рассмотренных позиций и т.д. и т.п.
При этом вариантов все равно остается еще очень и очень много, я не могу сказать что текущая версия у меня решит любой лабиринт.
Так для 6го лабиринта с сайта logic-games.spb.ru/sokoban/ (10 кубиков) ей потребовалось порядка 40 000 раз сдвинуть кубики, чтобы найти решение, на что ушло около минуты.
А вот для 8го уровня (18 кубиков) не хватило и 1 000 000, быстрее получилось самому уже пройти :)


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # Игра Сокобан / Сокобан - Вступление / 2015-08-09 06:01

МЫ в этой игре тоже пишем решалку, как ты помнишь, но только с одним ящиком.
А как ты делал с 4-мя ящиками, 10-мерный массив использовал? :)


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы по базовому вебинару / 2015-03-15 14:55

База по созданию проекта в VisualStudio на C#.
Очень полезная информация.


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы по базовому вебинару / 2015-02-28 15:39

Отличный вебинар, сделали игру Socoban практически с нуля целиком, много познавательных моментов.


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы по базовому вебинару / 2015-02-14 15:10

Очень понравилось!


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы о консольном вебинаре / 2015-02-11 14:08

Всегда интересно


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы по базовому вебинару / 2015-01-31 13:58

Спасибо было интересно.


2775. --
Orange
Orange
ответить
# Вебинары / Отзывы по базовому вебинару / 2015-01-24 13:32

Урок классный!


2775. --
Orange
Orange
ответить
# Консоль / For-to-Цикл / Форычер 2 / 2014-11-24 14:00

Вывод результата: те же числа через запятую, в конце точка.
Условие не верное, на самом деле нужно вывести через пробел и без "." в конце.


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange   / 2014-11-24 12:11

Я знаю, но новая мне больше нравится.


2775. --
Orange
Orange
ответить
→  Евгений Волосатов   / 2014-11-24 11:53

У вас есть полностью идентичная задача в разделе ниже (найти сумму цифр) и видео-решение к ней со звуком:
www.youtube.com/watch?v=gDiDp7b1tZc


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # Консоль / Лирика / Любимые цифры / 2014-11-23 16:03

ЕСТЬ ТАМ ЗВУК. Просто очень тихо. Нужно в наушниках слушать.


2775. --
Orange
Orange
ответить
# Консоль / Лирика / Любимые цифры / 2014-11-22 20:51

www.youtube.com/watch?v=YlnUpdGp2Z0
Звука в видео-решении нет.


2775. --
Orange
Orange
ответить
# Консоль / Лирика / Огород / 2014-11-19 15:14

Неправильно вычисляете, в одном из тестов ошибка, входные данные не прошедших тестов не показываете, а зря.
Более корректно считать так: 2*b + 200*a/b, но он ваш тест не проходит, а такой 2*(b+100*a/b) проходит.
Пример, введено 7 1000
тогда одна сторона 0.7м, а вторая 1000м
Периметр будет 2001.4 м (в дабле), или отбросив дробную часть 2001м
У вас же получится что одна сторона 0м (700/1000 в инт), а вторая 1000м, и ответ 2000 м, что совершенно не верно.

Еще корректнее считать в дабл. и округлять к ближайшему целому. А не отбрасывать дробную часть
Так при входных данных 8 1000 правильный ответ 2002.


  • Звание: Делегатор
  • Накопленный опыт: 221 час
  • Собранный капитал: нет

Клуб формулистов

Правила клуба формулистов

У каждого формулиста есть задача минимум на каждый день:
+ зайти на сайт, проверить один отчёт, получить 1 байт.
Задача максимум - выполнить все остальные ежедневные задачи.
Нажмите здесь чтобы перейти к ежедневному чек-листу.

В 24:00 МСК накопленные за сутки байты переносятся в недельный актив.
В воскресение 24:00 МСК все накопленные байты переходят на баланс формулиста.

Собранные байты можно обменивать на доступные видеокурсы (1 байт = 1 рубль, без скидок)
Приобретённые за байты видеокурсы доступны только во время нахождения в автобусе/клубе формулистов!

При завершении подписки в автобусе/клубе формулистов все накопленные байты обнуляются, а доступ к видеокурсам, приобретённым за байты, закрывается.
Продлевайте подписку заблаговременно.

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





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

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

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

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


Научился: Научился научить комп самому искать решения.
Трудности: Взял 1й попавший сайт с игрой, сходу прошел 5 лвл и встрял. Так как я немного программист решил сделать авторешалку. 6й уровень с ней и прошел. С большим количеством ящиков она думает достаточно долго, поэтому пока она думала над 7м лабиринтом, прошел еще 4.
Форма не дает ввести больше 24 часов на выполнение задание, хотя я реально на нее 5 дней потратил, чистое число часов не засекал.