Си шарп с нуля

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

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

Андрей Н.
  • Звание: Полиморфер
  • Накопленный опыт: 445 часов
  • Баланс Мегахешей: собрано 0 Mh, потрачено 0 Mh
  • Баланс Байтов: нет
  • Не состоит в «Клубе формулистов»
  • Последний визит: 2020-03-06 12:16:50
  • Возраст: 36 лет

Видеокурсы

Дата активности Видеокурс Прогресс
2017-01-05 aspnet Базовый ASP.ект 10 из 24 42 %
2016-12-24 task3 Комбинаторика 1 из 22 5 %
2016-12-24 java2 Игры на JavaScript 1 из 11 10 %
2016-10-08 gmaps ASP.NET и GMaps 2 из 11 19 %
2016-08-22 soft0 Демо софт 2 из 8 29 %
2016-08-14 image Фотошарп 9 из 10 100 %
2016-08-13 thread Бурные потоки все 12 100 %
2016-08-03 biknight Мат Конём и Слоном 23 из 32 72 %
2016-06-11 shifr Шифрование 8 из 27 40 %
2016-06-03 bilife Бинарная жизнь 6 из 7 100 %
2016-05-30 chess НаноШахматы 15 из 17 89 %
2016-05-29 ef Entity Framework все 8 100 %
2016-05-10 saver Хранитель экрана 13 из 15 87 %
2016-05-08 graf Коллекция графов все 19 100 %
2016-05-06 eshop Интернет-магазин 3 из 25 12 %
2016-05-06 task1 Семантика все 1 100 %
2016-05-01 iterator Итератор 9 из 10 90 %
2016-04-28 soft2 Новые технологии 1 из 18 7 %
2016-04-16 webbot Webbot On-Line 2 из 23 9 %
2016-02-13 game0 Демо игры 1 из 10 10 %
Итого: 146 из 310 48 %

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

Дата активности Консольный раздел Прогресс
2019-03-10 book 011. Циклы 7 из 8 88 %
2018-09-25 olimp Олимпиада 28 из 40 70 %
2018-05-23 club 10895 - Данил 42 1 из 0 %
2018-05-23 club 24 - Муза Оля все 3 100 %
2018-05-23 club 8275 - Глушков Александр 9 из 29 32 %
2017-01-30 task2 Матрицы 1 из 4 25 %
2017-01-30 task2 Do-рацикл 1 из 4 25 %
2017-01-08 book 111. Потоки 1 из 8 13 %
2017-01-07 book 101. Математика 1 из 7 15 %
2017-01-05 book 100. Массивы все 8 100 %
2017-01-05 book 010. Условия все 8 100 %
2017-01-03 book 000. Строки все 8 100 %
2017-01-03 book 001. Числа все 8 100 %
2017-01-02 club 10494 - Алексей Васюк 5 из 6 84 %
2016-12-31 club 4004 - Елена Вставская 24 из 27 89 %
2016-12-24 task1 Целые задачи все 11 100 %
2016-12-24 solo C# набор 1 из 17 6 %
2016-10-17 club 10162 - Дмитрий Гринь 3 из 5 60 %
2016-09-26 club 10670 - Сергей Соколов все 10 100 %
2016-09-26 club 5649 - Максим Лапшинов 7 из 8 88 %
2016-09-09 club 6452 - Кирилл Шмойлов все 6 100 %
2016-09-05 task2 Точка и плоскость все 6 100 %
2016-09-03 task2 Матрёшки все 9 100 %
2016-08-30 club 10558 - Иван Воронин все 7 100 %
2016-08-27 club 7119 - Владимир Новопашин 14 из 15 94 %
2016-08-13 task2 Условный оператор 1 из 16 7 %
2016-08-12 task2 Логика 1 из 13 8 %
2016-07-31 task1 Лирика 13 из 14 93 %
2016-05-05 task1 Календарь все 16 100 %
2016-05-02 task1 Цифры 11 из 12 92 %
2016-05-01 task1 Формулы все 9 100 %
2016-03-13 task1 Геометрия все 8 100 %
2016-03-10 task1 Символы все 5 100 %
2016-02-18 task1 Целые числа все 7 100 %
2016-02-14 task1 Строки все 14 100 %
2016-02-13 task1 Семантика все 6 100 %
Итого: 278 из 382 73 %
Сохранить страницу:

9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2017-09-02 18:25

Ссылка на Excel с таблицей результатов: rgho.st/7DTvZskTV


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2017-09-02 18:23

Ссылка на архив с кодом: rgho.st/7cMhKBbzH


2450. --
Saniych
Saniych
ответить
→  Андрей Н.  # Консоль / 7119 - Владимир Новопашин / Сумма цифр суммы чисел / 2017-04-07 19:09

Вся оптимизация сводится к выводу формулы согласно свойств чисел.  Например: сумма чисел от 1 до 10 равна 55.
Перебором всех решений можно, но уже 10-значные пары вычисляются более 2х часов на кора2дуба Е7500, на одном ядре.
Мой вариант брутфорса, вывел его от скуки:
public class Program       
//заморочки с байтами для экономии памяти, решение проверялось в онлайн сервисах.
{ public static void Main()     
// а в них сброс задачи при завышении потреблении памяти или процессорного времени.
{ uint st = uint.Parse(Console.ReadLine()); uint ylast = st-1;
byte[] sumA = new byte[st], sumB = new byte[st], cont = new byte[st+st];
sumA[ylast] = 1;
while (sumA[ylast] < 9)
{ Array.Clear(sumB, 0,sumB.Length); sumB[ylast] = 1;
while (sumB[ylast] < 9)
{ byte chk = 1; if (sumB[0] > 9) { rebild_mas(sumB); }
for (byte j = 0; j <= ylast; j++) { if (sumA[j] + sumB[j] > 9) { chk = 0; break;} }
                                if (chk == 1) { cont[0]++; if (cont[0] > 200) rebild_mas(cont); } 
                                sumB[0]++;

sumA[0]++; if (sumA[0] > 9) { rebild_mas(sumA); }
}
                Console.WriteLine("{0} ", otvet(rebild_mas(cont)));
}
        static byte[] rebild_mas(byte[] summas)
        {  byte z = 0; while (z < summas.Length-1)
        {  if (summas[summas.Length-1] > 9) { Array.Resize(ref summas, summas.Length+1); }
summas[z + 1] += (byte)(summas[z] / 10);
            summas[z] = (byte)(summas[z] % 10);  z++;
        }  return summas; }
static string otvet(byte[] lon)
{ string rez =""; for (int x=lon.Length-1; x >= 0; x--)
{ if (lon[x] == 0 && x > lon.Length-2)continue; else rez += lon[x]; }
return rez; }
}


8275. --
Tekashnik
Tekashnik
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-02-12 18:50

Хм мм,  проверю завтра...


9263. --
Андрей Н.
Андрей Н.
ответить
→  Tekashnik  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-02-12 16:54

Интересно играете, сударь! savepic.ru/12891971.png


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 20:42

IRobot robot = (IRobot)currentPlayer;
всё, спасибо, понял теперь, теперь ещё всё проще, не глянул сразу, что это присвоение просто для удобства. сразу не увидел, мельком глянул. подумал что там "new ..." сказывается спешка и отсутствие времени.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 19:36

Экземпляр бота создается один раз, а вот карта каждый раз передается новая - клонированная с рабочей


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 19:05

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


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 18:27

По поводу функции клонирования с возможностью реверса я сразу увидел, в любом случае после тестирования, я увидел потенциал для доработки идеи. Осталось найти время.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 16:24

В классе Position, кстати, и метод для копирования поля есть (с возможностью реверса)


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 16:18

Провёл тестирование, да, точно, значит кое что проверю, если что, скину ещё одну версию бота. Спасибо.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-16 06:59

Бот получает копию игрового поля, поэтому там можно делать какие угодно пометки, на "рабочее" поле они не повлияют.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Antonio  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-15 00:37

Да, проверку на ничейный результат допилил только сегодня. ))


11549. --
Сергей Аникин
Сергей Аникин
ответить
→  Андрей Н.   / 2017-01-14 21:34

Во, ушел ;-) спасибо!


9263. --
Андрей Н.
Андрей Н.
ответить
→  Сергей Аникин  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-14 20:53

Евгений Витольдович указал неправильный ящик.
Правильный: formula_programmista@mail.ru
Подчеркивание вместо дефиса


11549. --
Сергей Аникин
Сергей Аникин
ответить
→  Андрей Н.   / 2017-01-14 20:32

Вот беда с отправкой, приходит уведомление, что нельзя доставить письмо. Три раза уже отправлял, возвращается отрицательный ответ. Завтра попробую еще направить. А вообще я сильно не расстроюсь, если не дойдет, это мой первый проект, связанный с ИИ, и он вряд ли удачен ;-)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Сергей Аникин  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-14 20:18

Сергей, молодец!
Нужно теперь написанный класс прислать на указанный e-mail.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Евгений Волосатов  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-14 19:58

Ну конечно понимаю. А какая задача просто написать оценочную функцию или всё же более-менее полноценный ИИ?


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Оценка позиции / 2017-01-14 19:38

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


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-12 22:08

Боты-комментаторы придумали прикольную идею?)))


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-11 06:54

Да, прикольную идею придумали, боты - комментаторы =)


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-10 11:40

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


11017. --
Владимир Петреченко
Владимир Петреченко
ответить
→  Андрей Н.  # Базовый ASP.ект / Схема базы данных / 2017-01-09 00:17

Классно получилось!


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-08 23:00

Они не программисты, у них другие задачи в команде.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-08 22:57

Надо друзей привлекать к участию


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-08 22:54

Это не три случайных посетителя, а друзья с которыми я сейчас дискорде общаюсь


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # C# Четыре в ряд - Соревнование / Пять в Ряд - Соревнование / 2017-01-08 22:53

Сразу три случайных посетителя поставили оценки? Ай-яй-яй, Иван! :)
Надо бы рассылку сделать с приглашением, а то участников толком не будет.


9263. --
Андрей Н.
Андрей Н.
ответить
# Вебинары C# / Отзыв по Новогоднему Марафону / 2017-01-08 18:33

Круто, мотивация хорошая, давно хотел пройти курс, наконец-то его приобрел и начал выполнять, осталось только доделать, еще 60%. Хотя не очень удачное время конкретно для меня вышло, гости и прочее отвлекало. Ну и + начал свой кое-какой проект.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Евгений Волосатов   / 2017-01-06 10:59

Привет! Еще не занимался, но сегодня что-нибудь уже будет точно.


1. KF
Евгений Волосатов
Евгений Волосатов
ответить
→  Андрей Н.  # Базовый ASP.ект / Схема базы данных / 2017-01-06 10:30

Андрей, привет. Как у тебя успехи с подготовкой к соревнованию 15 вряд?


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Подключение к базе данных / 2017-01-06 09:16

Интересный совет


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Создание SQL-запросов / 2017-01-05 22:47

В MySQL нет такой...


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Схема базы данных / 2017-01-05 22:46

четкий список задач!


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2017-01-05 11:16

Я тоже так думал, но запятая у меня и у робота шарпа, и это уже не впервые, поэтому я уже заранее код дорабатываю, чтобы точка была полюбому.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # Консоль / 4.Циклы / Среднее арифметическое / 2017-01-05 09:20

Запятая будет на твоем локальном ПК, а у робота Шарпа будет точка по-умолчанию.


9263. --
Андрей Н.
Андрей Н.
ответить

791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.   / 2017-01-03 21:05

да я смотрю, прочерки в сложности и в отчетности. вот и задал впросы



791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Установка сервера MySQL / 2017-01-03 21:00

Отлично, Андрей. SQL везде схож


791. --
Валерий Жданов
Валерий Жданов
ответить

9263. --
Андрей Н.
Андрей Н.
ответить
→  Елена  # Функциональный П / ФП - Свой метод Where / 2017-01-03 08:17

Методы-расширения иногда бывают очень полезны, они позволяют сократить писанину, хотя на самом деле это обычный статический метод. Обязательное знание.


9263. --
Андрей Н.
Андрей Н.
ответить

9263. --
Андрей Н.
Андрей Н.
ответить
→  Елена  # Функциональный П / ФП - Калькулятор / 2017-01-03 08:13

Без лямбд сейчас никуда, поэтому знать и любить их обязательно!


9263. --
Андрей Н.
Андрей Н.
ответить
# Консоль / 1.Строки / Длинное слово / 2017-01-03 07:52

С помощью Linq решается, как обычно, в одну строчку.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Кирилл Лебедев  # Консоль / 1.Строки / Подстрока / 2017-01-03 07:47

Кирилл, а как удалять, если string - неизменяемый класс?


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # Консоль / 10558 - Иван Воронин / А и Б сидели на Трубе / 2017-01-03 01:29

Первую версию этой задачи решил всего один человек, Сергей Соколов, для остальных её упростили 2 раза, проще уже некуда.


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # Консоль / 10558 - Иван Воронин / Мультиварка / 2017-01-03 01:28

Это задача не по математике


9263. --
Андрей Н.
Андрей Н.
ответить
# Консоль / 1.Строки / Слова / 2017-01-02 20:10

С опытом эту задачу можно использовать как тренировку использования Linq


9263. --
Андрей Н.
Андрей Н.
ответить
# Консоль / 1.Строки / Эхо / 2017-01-02 19:27

Начало положено!


9263. --
Андрей Н.
Андрей Н.
ответить
→  Ludmila  # Хранитель экрана / Движение шарика / 2017-01-02 18:19

Отлично, начало положено!


9263. --
Андрей Н.
Андрей Н.
ответить

10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # Java Book / ФИНАЛЬНЫЙ УРОК / 2017-01-02 18:15

Куда же без неё в консоли =)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин  # Java Book / ФИНАЛЬНЫЙ УРОК / 2017-01-02 18:14

Старая добрая псевдографика!


9263. --
Андрей Н.
Андрей Н.
ответить
# Консоль / 8275 - Глушков Александр / Гладкие числа / 2016-12-31 09:40

Написал красивое решение с использованием итератора, а робот шарп его не может переварить :(


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # Базовый ASP.ект / Создание модели Story / 2016-12-25 22:49

Да, времени всегда не хватает =)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Валерий Жданов  # Базовый ASP.ект / Создание модели Story / 2016-12-25 11:53

Осталось дождаться выходных, чтобы уже окончательно приступить


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Создание модели Story / 2016-12-25 09:20

Логично. но тут идеальных программ нет, после окончания курса можно сделать репозиторий, как ты хочешь)


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Создание пустых страниц / 2016-12-25 09:19

а что за красная буковка на заднем плане? уж очень она эмблему "videosharp" напоминает)))


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Выбор темы для проекта / 2016-12-25 09:17

Ну что ж, гифки так гифки)) котики так котики)


791. --
Валерий Жданов
Валерий Жданов
ответить
→  Андрей Н.  # Базовый ASP.ект / Мы начинаем ASP.NET с MVC / 2016-12-25 09:17

главное - начать! welcome!


7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  Андрей Н.  # Базовый ASP.ект / Выбор темы для проекта / 2016-12-25 07:36

Коты они захватили инет.


9263. --
Андрей Н.
Андрей Н.
ответить
→  вадим   / 2016-12-01 22:14

Закончилось, в воскресенье на вебинаре подвели итоги, на выходных выложу видео и архив с ботами.


6245. --
вадим
вадим
ответить
→  Андрей Н.   / 2016-12-01 21:53

соревнование закончилось?


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-27 02:27

я сравнивал с одинаковыми по силе ботами, сделал 2 дубликата бота и с ними сравнивал, с разными по силе естественно разница будет не сильная, так как всё равно они выиграют, я о сравнении одинаковых ботов, клонов, ладно, я после соревнований сам сравню ещё раз.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2016-11-26 22:15

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


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.
Комментарий дельный и полезный. Спасибо!


9263. --
Андрей Н.
Андрей Н.
ответить
→  Елена  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-25 19:22

Ну еще есть пара дней, если вруг будут мыски как еще улучшить - можно прислать повторно


9263. --
Андрей Н.
Андрей Н.
ответить
→  Максим Лапшинов  # C# Четыре в ряд - Соревнование / Как протестировать ИИ / 2016-11-25 19:19

Максим, молодец, у тебя чуть менее двух суток, чтобы прислать своего бота!


11852. --
Alex
Alex
ответить
→  Андрей Н.   / 2016-11-25 11:15

Большое спасибо!


9263. --
Андрей Н.
Андрей Н.
ответить
→  Alex   / 2016-11-24 20:11

rgho.st/8X2Bxs6Dd


11852. --
Alex
Alex
ответить
→  Андрей Н.  # Хранитель экрана / ПОЛУФИНАЛЬНЫЙ урок / 2016-11-24 19:43

Можно ли посмотреть исходник?


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

Теперь есть видео, на котором показано как протестировать своего бота, поэтому написать его стало немного проще.


8275. --
Tekashnik
Tekashnik
ответить
→  Андрей Н.   / 2016-11-18 20:35

Ну спасибо, только сейчас уже спать, а завтра на дачу(( так что не думаю, что успею потестить, лучше перенести на неделю)))


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

Ну, это, скорее, не урок, а так, введение в курс дела...


9263. --
Андрей Н.
Андрей Н.
ответить
→  Tekashnik   / 2016-11-18 20:17

Вообще в папке с программой лежит отдельная dll - это движок игры (не знаю, для чего я его вынес отдельно, но можно теперь этим воспользоваться).
Нужно его подключить также как библиотеку FiaRPlayer.dll и сыграть следующим образом:
using System;
using FiaREngine;
using FiaRPlayer;

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            IFiaRPlayer player1 = new MyPlayer();
            IFiaRPlayer player2 = new MyPlayer();
            FiaREngine.FiaREngine engine = new FiaREngine.FiaREngine(player1, player2);
            engine.PrepareToPlay();
            while (engine.GameState == GameState.MoveOfFirst || engine.GameState == GameState.MoveOfSecond)
                engine.DoMove();
            Console.WriteLine(engine.GameState);
        }
    }
}
Сюда скинул xml-ку, надо положить в папку с FiaREngine.dll для того, чтобы были русские комменты к методам и свойствам движка: rgho.st/6RdTRnXjg


8275. --
Tekashnik
Tekashnik
ответить
→  Андрей Н.   / 2016-11-18 19:14

Печально, пока ошибку найти не могу, а то что есть, жаде терменатора не выиграет, хотя моя реальная прога, вроде неплохо справляется


9263. --
Андрей Н.
Андрей Н.
ответить
→  Tekashnik   / 2016-11-18 19:02

Напрямую - никак, только если добавить в солюшен какой-то запускаемый проект и из него работать с этой библиотекой


8275. --
Tekashnik
Tekashnik
ответить
→  Андрей Н.   / 2016-11-18 15:25

Андрей, а можно как то оттебажить dll??
Я вот написал свою прогу в которой всё работает, переношу методы в dll, а там работает некорректно, а брейкпоинта нигде не поставишь и не понятно, что именно там не отрабатывает, есть ли какие то методы?


5649. --
Максим Лапшинов
Максим Лапшинов
ответить
→  Андрей Н.   / 2016-11-18 14:38

Неочень ведь выйдит отсеять. Может случится зацыкливание при специальной комбинации которая небыла выевлена в переуд тестирование и получится зацыкливание на 1 партии из мильена партии


9263. --
Андрей Н.
Андрей Н.
ответить
→  Максим Лапшинов   / 2016-11-18 13:20

Именно поэтому его нет, потому что не определишь время оптимальное, то ли 1 сек ставить на ход, то ли 10, а может 60?
Просто в начале вручную всех зацикленных надо будет отсеить.


5649. --
Максим Лапшинов
Максим Лапшинов
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-18 09:16

Как так? Должен быть таймоут. Ктото напишит хитро обработку массива клеток и программа зацыклится вечно. Что тогда будит? А ктото напишит что один ход обрабатывается скажем 1 секунду.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Максим Лапшинов  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-18 08:21

Таймаута нету, по крайней мере я о нем не знаю


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. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-17 13:33

чем тормознее, тем больше побед =) да, надо оптимизировать, времени небыло, но тормозных там реально 2, другие 3 сносные по скорости.


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2016-11-17 13:26

Да-да, получил. Какие-то они у тебя неторопливые)


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-17 12:25

Привет, я там письмо с ботами скинул, пришли?


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

Там и бота то по сути нет, так посмотреть как работает))


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-16 22:34

Да, я понял, уже архив раздал, поэтому правила изменить можно будет после соревнований, ок, скоро скину письмо с ботами


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2016-11-16 22:33

В принципе, формула расчета рейтингов изаестна и смоделировать при желании можно и так. Примем, что у нас 5 ботов, например, #1 и #4 самые сильные, побеждают остальных, а между собой всегда играют вничью, #3 - самый слабый, проигрывает всем остальным, #2 чуть сильнее, #5 еще сильнее, но слабже чем #1 и #4. Теперь просто запускаем 1000 боев так и 1000 так и смотрим эффект. Если реально будет ощутимая разница, то я на подведении итогов это сообщу и прямо там заменим алгоритм, но менять архив уже выложенный - точно не будем.


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-16 22:05

Я понял, просто я проверял, запускал сразу 1000 боёв и вручную тыкал по 1 бою чтобы было 1000 =) и когда тыкал по 1 бою статистика у одинаковых ботов была одинаковая, +- 1-3 рейтинга, а при тыке в 1000 боёв сразу, один слил рейтинг у всех, отожлася, второму уже нечего было высасывать, так как разница в рейтинге была существенная и потом когда он совокупился с себе подобным, он чуток перелил и всё, не хватило сравняться, я просто с 2003 года изучаю этот рейтинг и работаю с ним часто, такая формула используется на соревнованиях 1х1 или командных, при этом чем разница в рейтинге больше, тем не выгоднее тем, у кого рейтинг выше, потому что они ничего не получат при победе, а при проигрыше потеряют больше обычного, ок, я после соревнований проведу доп. исследования, свопнув циклы, спасибо. Прикольно сделал, зацепила идея =)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Кирилл Лебедев  # C# Четыре в ряд - Соревнование / Как создать ИИ / 2016-11-16 20:19

Зато победа будет сладкой!


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

Интересный скрин, написать бота, который проигрывает "комплектным" - тоже надо уметь)


9263. --
Андрей Н.
Андрей Н.
ответить
→  Иван Воронин   / 2016-11-16 20:02

Привет, Иван!
Не думаю, что это значительно повлияет на результаты, так уж устроена эта формула, иначе ее бы повсеместно не использовали! Возможно мелкие погрешности будут из-за округления до целого, но в общем итог всё равно один, победитель от этого не изменится (да и второе-третье место при большом количестве ботов тоже). Тут ведь всё завязано на мат.ожидание количества набранных очков и оно не зависит от порядка партий, только от их числа. Ну и самая главная проблема в том, что архив выложен и "менять правила во время игры" как-то не правильно.
А вообще после подведения итогов у тебя будет возможность поменять последовательность боев.


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.   / 2016-11-16 19:34

Привет, уже 5 ботов между собой сталкиваю лбами и базовые 2, итого уже 7 штук у меня балуются, заметил погрешности в расчётах, проанализировав ситуацию увидел, что если долго тыкать по 1 бою между ботами, то статистика ровненькая идёт как надо, а если сразу ткнуть 1000, то самый крутой схавает у всех по очереди рейтинг, а другие потом с теми же играют и рейтинг чуть ниже отбирают, так как формула так устроена, что чем с более слабым противником играешь и побеждаешь, очков меньше получаешь или вовсе не получаешь, поэтому советую свопнуть циклы количества битв с циклами перебора противников, т.е. у тебя сейчас выбираешь один бот, потом другой, а потом они по циклу выбранного количества боёв сражаются, сливая друг другу рейтинг, если окажется, что один заведомо слабее, то слив будет критическим, потом выбирается другой и если первый оказался сливатором, то он уже второму и последующим ничего не сольёт, так как у него рейтинг упадёт ниже плинтуса, а если он был тот, кто вампирил рейтинг, то он схавает его у всех, кто попадётся, если они слабее, в итоге, последующий выбор бота уже с ослабленным рейтингом и сталкивание их лбами с другими будет приносить им мизер или вовсе ничего, если же сделать как я написал выше, а именно свопнуть циклы, то погрешность будет минимальной, так как в идеале, данный расчёт рейтингов рассчитан на балансировку противников, а именно, можно реализовать отсеивание и сталкивать лбами тех, у кого рейтинги минимально отличаются в первую очередь. это отдельная песня, хотябы просто свопни циклы.


5649. --
Максим Лапшинов
Максим Лапшинов
ответить

9263. --
Андрей Н.
Андрей Н.
ответить
→  Aleksandr Zaitcev  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-15 17:52

Пока не анонсировано, но я думаю - подведение итогов будет в воскресенье


10558. --
Иван Воронин
Иван Воронин
ответить
→  Андрей Н.  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-15 17:49

А когда будут проводиться соревнования и до какого числа принимаются боты?


9263. --
Андрей Н.
Андрей Н.
ответить
→  Aleksandr Zaitcev  # C# Четыре в ряд - Соревнование / Заявка на участие! / 2016-11-15 17:30

Если будет время и желание - никто не запрещает прислать еще одного бота, чем больше ботов, тем веселее!
Главное чтобы имя у него другое было, в том сисле и у класса, а то там, вроде, коллизии могут быть.


  • Звание: Полиморфер
  • Накопленный опыт: 445 часов
  • Собранный капитал: нет
  • Участник «Клуба формулистов»: до 2017-01-31

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

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

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

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

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

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

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





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

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

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

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


Научился: Научился реализации Drag'n'Drop
Как реализовать задание со звездочкой пока не знаю - JS не владею, но в принципе есть догадки, что надо использовать не appendChild, а replaceChild, либо после аппенда удалять предыдущего потомка. Ну да ладно, посмотрим как это реализовано в следующем уроке.


Научился: Научился думать позиционно, а не комбинаторно.
Трудности: Научиться думать позиционно.
Сначала думал, что без поиска вглубь/вширь хорошего бота не написать, но оказалось, что при достаточно хорошей функции оценки позиции бот тоже играет довольно неплохо. Я вот у своего теперь не всегда даже и выигрываю! Хотя, конечно, любой перебор должен легко выиграть у такого бота, поэтому важно комбинировать оба способа достижения цели. В функции оценки еще довольно сложно подобрать коэффициенты для определенных "позиционных событий", одна и та же функция с разными коэффициентами может как играть очень сильно, так и сливать на пустом месте.