Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
Большой Новогодний подарок от Игромистра
Безденежный доступ к видеокурсам за Мегахеши

Морской Бой / Олимпиада - Самый лучший алгоритм

  • На участие в олимпиаде было прислано 10 работ.
    В этом видео мы проводим тестирование всех программ.
    Домашнее задание - составить словесный алгоритм ИИ.
  • Дата отправки отчёта: 12 декабря 2015 г.
  • Задание выполнено: за 3 час. 00 мин.
  • Чему научился: Искать разные способы решения поставленной задачи.
    Сравнивать эффективность разных алгоритмов с помощью C#.
    Эффективно играть в Морской бой. :-)
  • Что было сложным: Придумать свой эффективный алгоритм, отличающийся от предложенных. Пока не удалось.
    Предположения:
    - задействовать random, чтобы защититься от искусственно подобранных "контррасстановок";
    - перед каждым выстрелом находить возможное расположение кораблей;
    - стремиться к равномерному обстрелу вертикалей и горизонталей;
    - возможно, использовать заготовленные шаблоны совместно с random.
  • Комментарии: Понравился алгоритм Orange.
    Свой пока сделаю простым.
    1. Создадим матрицу 10 × 10, в которой номерами установим порядок обстрела всех точек.
    - Правило обстрела выберем по диагоналям с постепенно уменьшающимся интервалом.
    - Оставшиеся часть матрицы заполним, отразив первую зеркально.
    2. Будем последовательно перебирать в заданном порядке я чейки для обстрела.
    3. Стреляем, если ячейка имеет статус "неизвестно".
    4. Если ранили, то добиваем корабль.
    - проверяем ячейки по горизонтали и по вертикали от раненой;
    - если снова попали, запоминаем направление, а соседние ячейки в другом измерении помечаем "мимо";;
    - если после этого промах - добиваем в обратную сторону;
  • Оценка видео-уроку:
Отчёт от 7980 за Морской Бой / Олимпиада - Самый лучший алгоритм




Оцени работу

 
Сохранить страницу:

7980. Сергей Лузум
Сергей Лузум
ответить
→  Neverwinter 2  # Морской Бой / Олимпиада - Самый лучший алгоритм / 2015-12-13 11:03

Понятно!))) Разные цвета появлялись почти случайно. Я для себя помечал небольшие группы одним цветом, чтобы самому отслеживать равномерность и заполнения поля числами. А потом для облегчения повторного поиска внизу добавил шкалу с соответствием числовых диапазонов цветам.


1901. Neverwinter 2
Neverwinter 2
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Самый лучший алгоритм / 2015-12-13 08:58

Здорово! Попробовал искать цифры 1, 2, 3, 4, 5,.... из-за смены цветов это оказалось непросто! Ищешь то старый цвет и думаешь - ну где же где же 13.... Красиво, молодец!


4814. Дмитрий
Дмитрий
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Самый лучший алгоритм / 2015-12-13 05:23

Хороший алгоритм.
Понравилось, что достаточно быстро проверяются клетки на граничных линиях, на 5-12 ходах.
Опытные игроки отдают под бой многопалубные корабли и оставляют одиночным целых 60 клеток в распоряжение.
Чем раньше уничтожишь многопалубники, тем лучше.


2146. Иван
Иван
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Самый лучший алгоритм / 2015-12-13 01:35

Красота! Очень здорово придумал.


24. Олюшка
Олюшка
ответить
→  Сергей Лузум  # Морской Бой / Олимпиада - Самый лучший алгоритм / 2015-12-12 23:53

Сергей, это очень круто! Вижу как ты старательно и усердно проработал урок! Молодец! :)


6391. Владимир
Владимир
ответить

  • Отчёт оценивали:
    6958Кирилл+1   1Евгений Волосатов+1   6391Владимир+1   3664данила+1   4992Николай+1   3747Сергей+1   8118Юрий +1   6458Илья+1   5649Максим Лапшинов+1   6203Николай (nick27m)+1   6925Артём+1   2639Морозов Юрий Александрович+1   7276Ильшат+1   5219Nromik+1   24Олюшка+1   2146Иван+1   4814Дмитрий+1   6080annaka+1   1901Neverwinter 2+1   7645Александр Львович+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Просмотрела разные алгоритмы и их загрузку через абстрактный класс.
Трудности: Понять как это все работает. И алгоритмы и их загрузка.
Алгоритмы public и orange. Как я поняла, к любому из представленных алгоритмов можно найти более оптимальные расстановки. Есть мысль использовать в программе 2-3 алгоритма, выбирая номер алгоритма рандомно. Алгоритм. Найти все точки, где может быть четырехпалубный корабль. Выделить их в массив. Стрелять рандомно по свободным, пока есть не проверенные. Если корабль подбит, пометить соседние ячейки как пустые. Если ранен, рандомно проверить во всех направлениях, пока не останется одно. Добиваем корабль. Здесь можно сделать проверку какие корабли остались и определить может ли корабль быть размещен горизонтально/вертикально, сколько. И стрелять по наиболее удачной ячейке. Далее проверяем на двухпалубные корабли. Опять выделяем места, где они могут быть размещены и стреляем рандомно, пока не проверим все. Оставшиеся однопалубники ищем рандомно из числа не проверенных ячеек.
Научился: Рассмотрели различные версии алгоритма ИИ.
Болел за алгоритм 4004, мой голос за Елену.