Си шарп с нуля

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




Orange
  • Звание: Делегатор
  • Накопленный опыт: 211 часов
  • Не состоит в «Клубе формулистов»
  • Последний визит: 2016-11-28 13:15:56
  • Возраст: 40 лет

Видеокурсы

Дата активности Видеокурс Прогресс
2016-06-04 jawa Язык Java 4 из 94 5 %
2015-08-09 game5 Игра Сокобан 2 из 22 10 %
2014-10-29 task3 Комбинаторика 1 из 22 5 %
Итого: 7 из 138 6 %

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

Дата активности Консольный раздел Прогресс
2016-07-02 olimp Олимпиада 16 из 32 50 %
2016-01-07 task1g Целые задачи все 11 100 %
2015-02-25 task1h Цифры все 12 100 %
2015-02-19 task1c Лирика 13 из 14 93 %
2014-12-06 task2d For-to-чки 16 из 26 62 %
2014-11-26 task3 Комбинаторика все 9 100 %
2014-11-26 task3 Динамика все 3 100 %
2014-11-25 task2 Алгоритмика 9 из 20 45 %
2014-11-25 task2r Подпрограммы все 14 100 %
2014-11-25 task2b Логика 3 из 13 24 %
2014-11-25 task2k Последовательность 2 из 6 34 %
2014-11-25 task3 Рекурсия все 4 100 %
2014-11-24 task1b Строки все 14 100 %
2014-11-24 task2g Обман цикла 1 из 7 15 %
2014-11-24 task6 For-to-Цикл все 12 100 %
2014-11-24 task2s Строки 1 из 6 17 %
2014-11-24 task2e Пока-цикл 2 из 6 34 %
2014-11-24 task2m Любимые циклы 1 из 6 17 %
2014-11-24 task2i Узник цикла IF 5 из 6 84 %
2014-11-24 task2c Условный оператор 9 из 16 57 %
2014-11-24 task2o Матрёшки 1 из 9 12 %
2014-11-24 task2l Математика 1 из 9 12 %
2014-11-23 task1i Календарь 1 из 16 7 %
2014-11-23 task1d Формулы все 9 100 %
2014-11-23 z Вещественные числа все 1 100 %
2014-11-23 task1f Геометрия все 8 100 %
2014-11-23 task1e Символы все 5 100 %
2014-11-19 task1a Целые числа все 7 100 %
2014-10-22 task1 Семантика все 6 100 %
Итого: 196 из 307 64 %
Сохранить страницу:

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го лабиринта с сайта http://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

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


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

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


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

http://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.

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




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

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

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

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