Эх...может давайте забадяжим еще один конкурс?
К сожалению последний - крестики-нолики, проводился еще до моей регистрации, и как я понял из его обсуждений, успеха он не имел, НО это ведь не повод отказываться от подобных мероприятий
Побольше рекламы, какоето вознаграждение типа повышения репутации, или особое звание, и я думаю что желающих будет немало... ведь посещают этот форум не только студенты которым одну лабу зделать или курсовую, а еще и заинтересованые люди
что касаеться конкретных предложений:
предлагаю провести чтото типа морского боя, тоесть: учасник пишет програму(не саму игру) которая должна исходя из текущей ситуации на обоих полях определять следующий ход, тоесть две програмы играют между собой, ну как с крестиками ноликами. Программа должна читать из файла оба поля, и принимать решение, после чего вводяться соответствующие корективы в поле. А корабли пусть розполагаються случайно, при каждой игре, тоесть програма учасника - одна единственная процедура которая делает ход. я к чему собственно клоню, в таком случае подобную прогу сможет написать даже школьник, почти ничего не знающий о паскале, и в тоже время даже в этой игре можна придумать уйму стратегий, и ктомуже можно будет организовать чтото типа груповых боёв, пусть за каждую сторону играют по несколько програм которые делают ходы по очереди.
Морской бой - самая интересная и простая игрушка из тех что мне пришли в голову... можно подумать над другими вариантами игр, но я думаю что в любом случае (если програма будет несложной в реализации) люди потянуться человек 10-15 участников должно набраться
Может я чего - то не понимаю, но какая там может быть особая стратегия? Просто рандом и все! ( разве что для красоты поля выбирать, и явно ложные не выбирать).
Наличие выигрышной стратегии в морском бое не доказано. Не доказано даже, что выбор той или иной стратегии способен привести к уменьшению среднего количества ходов необходимых одной стороне для разгрома противника.
Поэтому прежде, чем предлагать конкурс, могу посоветовать сначала поисследовать этот вопрос самостоятельно.
Тем более, что как раз в морском бое для такого исследования не нужен второй игрок: достаточно
1. Придумать N стратегий расстановки кораблей (хотя бы N=2)
2. Придумать M стратегий обстрела (хотя бы M=2)
3. Для каждого из N*M вариантов сочетания стратегии расстановки со статегией обстрела провести K испытаний (K должно быть статистически значимо - могу предложить: квадрат средней длины партии)
4. Получить средние количества ходов необходимых для победы в каждой паре стратегий.
5. На основе 4 сделать вывод, дает ли применение какой-либо стратегии преимущество в игре.
Кстати, дляподобных конкурсов есть уже порядком подзабытая альтернатива CROBOTS для С-программистов и PCROBOTS для программистов, использующих любые DOS-компиляторы для реального режима (организуется сражение боевых машин на ограниченной площади, при этом сражение ведется пошагово, а каждая боевая машина может сканировать пространство в определенном угле , получая расстояние до ближайшей цели, перемещаться по полю и стрелять).
Для виндов возможно создание программы оболочки, к которой подключаются боевые машины, оформленные в виде dll со стандартизованным интерфейсом.
1. Увы, условия сформулированы очень неконкретно и требуют массы уточнений. По такому описанию ни играть, ни разрабатывать стратегию нельзя. Это не придирка: невозможно написать программу на С, Паскале, Ассемблере или любом другом ЯП, если не умеешь внятно описать, что эта программа должна делать по-русски, украински, английски, etc.
2. Усложнения условий никак не говорят о существовании выигрышной стратегии. С другой стороны, этот факт достаточно просто не только проверить, но даже оценить количественно. Как - я писал выше.
3. Все люди разные, у всех разные интересы. Мне, например, вообще неинтересно принимать участие в конкурсах. По моему харакеру лучше принять участие в подготовке, например, выработать условия, сформулировать правила, написать софт, предназначенный для тестирования работ участников и т.п. Другими словами, я скорее ПРЕДЛОЖУ конкурс, чем ОТКЛИКНУСЬ на чье-то предложение. Поэтому делать заключения о том, насколько идея конкурса может быть поддержана участниками форума, мне кажется, неосмотрительно.
Что касаеться морского боя:
под стратегией я подразумевал то, что в случае с обычным морским боем у игры есть одна конкретная цель - уничтожить все корабли противника, а учитывая то что они и однопалубные и четырёхпалубные, достигнуть этой цели можно только случайно, как сказал andriano в МБ нету выиграшной стратегии, Но в ЭТОМ морском бою становиться очевидным то, что тот кто первым потопит 5палубный и 4палубный корабли, тот получит явное преимущество в количестве выстрелов за ход, как я говорил если у тебя потоплен один из этих кораблей, то ты делаеш на один выстрел меньше каждый ход(2 и 1 соответственно). Такчто грубо говоря: хочешь увиличить шансы на победу, а точнее уменьшить шансы противника - топи большие корабли, а вот эту задачу можна решить разными путями, для этого есть супер-оружие(которое используеться раз в 6 ходов), и поэтому программа должна исходя из той ситуации что сложилась втечении предыдущих 5 ходов использовать то оружие, которое именно в даной ситуации окажнеться наиболее эфективным. Все вышеописаные действия дают только преимущество, но не 100% победу, поэтому вместе с этим простой случайный обстрел не теряет своей актуальности
Исходя из всего выщеописаного, я и решил остановить свой выбор на этой модификации МБ.
НО я ведь ничего не утверждаю, а только предлагаю Интересно выслушать ваши предложения
З.Ы. Но всётаки уж очень хочеться поучаствовать в каком либо интересном конкурсе поэтому жду предложений по поводу самого предмета конкурса
Рас уж никто не высказывает других предложений, продолжу по поводу модифицированого МБ.
Программа которую должен прислать учасник будет довольно простой в реализации, она просто должна делать выстрелы(в худшем случае случайно, в лутчем по определённой схеме), уметь добивать корабли(чтоб не стреляла куда попало если уже есть подбитый корабль), и каждый шестой ход она должна выбирать тип супер-оружия для выстрела, ну и соответственно координаты, куда им стрелять(то что выстрел каждым типом оружия спецыфичен, и как надо указывать координаты точки дложно быть описано в правилах конкурса). А для того чтобы программы с заложеной стратегией успевали реально себя показать, число партий можно увеличить скажем до сотни... незнаю может загнул, но впринципе я не думаю что каждая игра будет продолжаться очень долго... зато в результате получим реальную оценку возможностей прграм...
Если ты серьезно предлагаешь конкурс, то тщательно сформулируй две темы:
1. Правила игры.
2. Условия, которым должна удовлетворять программа, чтобы выдержать автоматизированную проверку.
Ну и, естественно, нужно подготовить для конкурса набор сервисных программ, которые будут обрабатывать программы участников, проводить матчи, получать результаты и подводить статистику.
В принципе твоя позиция совершенно понятна: мало кому хочется заниматься бесперспективным делом, поэтому хочется заранее запастись хоть какой-то поддержкой.
Но есть и другая сторона: мало кому захочется принимать участие в конкурсе или его проведении без наличия хоть каких-то гарантий, что человек, затеявший это дело, способен довести его до конца. В противном случае участники могут либо вообще не дождаться результатов, либо результаты никого не устроят.
Проэтому, раз уж ты изъявляешь желание заняться организацией конкурса, прежде чем объявлять собственно, конкурс рекомендую сделать две вещи:
1. Опубликовать подробные правила игры.
2. Провести исследование, действительно ли в предлагаемой тобою игре наличие стратегии способно существенно сказаться на результате.
В любом случае, даже если конкурс не получится, на этих двух этапах ты сможешь приобрести ценный опыт: на первом - тщательно формулировать свои мысли и вообще составлять полные и непротиворечивые описания, а на втором - ставить и решать простейшие исследовательские задачи, так сказать, проводить тестирование программных алгоритмов.
По поводу МБ:
пусть на поле размером P на Р клеток, розмещены несколько кораблей, величиной в N палуб, тогда для того чтобы потопить все корабли, со 100% вероятностью необходимо сделать P2/N выстрелов, стреляя по диагоналям, с интервалом N-1 клеток, между диагоналями, тоесть за P2/N выстрелов мы в любом случае обнаружим все корабли. Таким образом должна действовать програма, стрелять по диагоналям, и как можна ефективнее использовать супер-оружие для добивания/обнаружения кораблей в промежутках между диагоналями. Впринципе можна задавать размеры поля и кол-во кораблей, а также их величину как параметры, и смотреть как програмы будут вести себя в условиях разных масштабов сражений.
Но, посетила меня еще одна мысль по поводу предмета конкурса, а почему бы не "Покер Джокер"(может и бред написал, но гдето видел что именно так назыветься), тоесть покер на костях.
Правила
оба игрока по очереди кидают по 5 кубиков, после этого первый выбирает какие кубики он будет перебрасывать, перебрасывает, затем теже действия выполняет второй игрок, а побеждает тот у которого сильней комбинация:
пара - две кости одинакового достоинства;
две пары - две пары, например 1,1,2,2,3
триада - три кости одинакового достоинства;
стрит - пять костей подряд, это 1,2,3,4,5 или 2,3,4,5,6;
фул - пара + триада;
каре - четыре кости одинакового достоинства;
покер - пять костей одинакового достоинства;
Интерес заключаеться как в том чтобы научить програму делать правильный выбор переброса костей, так и в том что можно сделать игру вместе со ставками, (каждый кубик - 100 очков), дать каждой програме начальный капитал, а затем после ряда соревнований(возможно случайных, тоесть со случайными противниками) определить у кого стало больше всех очков.
Я как только зарегистрировался на этом форуме, начал писать свою первую игру , и это был этот самый покер, причом получился вполне не глупый ИИ.
Вобщем я прикрепляю свою игру, не судите строго за оформление кода, всётаки первая крупная програма, и за последний гоуту
В общем поглядите на игру, на сам смысл игры, помойму сама реализация здесь куда интересней чем МБ, да и сама игра тоже будет более подходящей для конкурса.
Прошу всех высказать своё мнение по поводу кандидатуры этой игры на конкурс...
Мне кажеться что это очень хорошыый вариант: довольно простая задача(научить програму выбирать какие кубики перебрасывать), и в тоже время интересный результат
Прикрепленные файлы
KOSTI.PAS ( 16.22 килобайт )
Кол-во скачиваний: 490
У этой игры есть один нехороший недостаток - очень тупая оптимальная стратегия, которая гарантирует, что при любом противнике программа статистически окажется либо в выигрыше, либо на равных (если противник будет пользоваться той же оптимальной стратегией.
Притом, самое противное, - что эту стратегию не надо выдумывать, она откровенно выводится из статистики.
Алгоритм написания такой игры следующий.
Пишется программа, перебирающая все возможные комбинации (точнее, их типы) и их возможные продолжения с учетом вероятности их появления. Из них выбирается единственное - имеющее максимальное матожидание результата.
Полученные на основе статистического анализа пары заносятся в таблицу (ситуация - оптимальное продолжение).
После этого игровой программе остается только выбирать из массива нужную величину.
Впрочем, данная задача интересна как раз тем, что показывает новичку, что пользователю игры предъявляется единственная и далеко не самая сложная программа, тогда как на этапе разработки писать приходится несколько, причем часть из них существенно сложнее той, которую в результате получит пользователь.
Т.е. создаваемый инструментарий к игре существенно превосходит по сложности и трудозатрартам саму игру.
RathaR, для дискуссий по конкретным играм создавай, пожалуйста, отдельные темы в разделе Игры, а тут давай ссылки на темы.
По предмету: в процессе этой дискусии ты, полагаю, начинаешь осознавать, что даже просто придумать нормальную тему для конкурса - уже непростая задача )).
Ну что ж... Давайте тогда подумаем над тем, какая игра, или клас игр подойдёт для конкурса.
Примерные критерии:
1) Отсутствие стопроцентной выиграшной стратегии, и "ничейной смерти". Я думаю, что будет глупо если программа кого-нибудь из конкурсантов будет сводить все игры в ничью...
2) Элемент случайности. Я думаю что он дожен присутствовать, хотя его значение - спорный вопрос...
3) Сложность алгоритма действий. Эта игра должна иметь "гибкий алгоритм" незнаю как иначе выразиться. Тоесть дожно быть большое кол-во очевидных, и не очень способов игры... ну чтобы программы не действовали по одному алгоритму, пусть даже с разными реализациями... хотя это в большей степени зависит от програмиста, чем от игры. Вобщем я также подразумиваю то, что программа может быть написана за 20-30 минут, и хоть немного уметь играть, а может за час за два, и будет отлично играть.(Аналогия - морской бой: одна програма среляет просто случайно, а другая еще и проверяет вообще возможно ли наличие корабля в той клетке куда она собираеться стрелять, и впринципе обе проги можна считать полноценными.)
4) Сложность реализации должна быть невысокой, как я уже говорил, чтобы средний студент-програмист мог без проблем реализовать все поставленые задачи, в хотябы примитивной форме (как в аналогии про морской бой), потратив при этом не более часа, а если его попрет, или появиться интерес, то он дальше пойдет совершенствовать програму.
Вроде всё... может быть я чтото упустил?
Крестики-Нолики, я полагаю, были предметом первого конкурса не потомучто они лучше всех подходили, а потомучто просты, и извесны всем.
Если будущие конкурсанты смогут участвовать в выборе предмета конкурса, я думаю это только прибавит желающих поучаствовать.
Выдвигайте варианты игр, добавляйте критерии, вобщем думаем!
Сам я, по прежнему, считаю что "Покер на костях" - неплохая кандидатура. Но еще хочу добавить, может стоит задуматься над карточными играми? Например "Очко", или даже "Дурак" он помойму не настолько сложный чтобы сбрасывать его со счетов:
У меня тут возникла небольшая идея... Не знаю, вызовет ли она одобрение, отторжение или ещё чего-то, но всё же:) Так вот, иногда я играю вот в http://klavogonki.ru Довольно увлекательно, а главное, полезно. И я подумал, может, провести подобное соревнование, но в рамках форума?(никогда не понимал написание нарицательного с большой буквы) С программированием, правда, тут связи мало (если, конечно, кто-нибудь не напишет бота)), но всё равно соревновательный элемент есть) Относительно реализации, можно использовать хотя бы вышеприведённый сайт... Хотя об этом ещё рано думать, пока что высказываемся:)
Соревнование, конкурс имелось в виду проводить по програмированию, понаблюдать за играми программ, как первый - крестики-нолики. А в этом побеждает тот кто владеет слепым/десятипалым печатаньем
Не то что плохая игра, просто как по мне, то скорость набора текста не имеет особого отношения к програмированию... а бота... я непонимаю зачем писать под эту игру бота... разве что для задания темпа, но опять таки ограничивать его по скорости...
А конкурсы между форумчанами можна проводить и в разделе "Свободное общение"
Я же сказал, что к программированию отношения не имеет... Просто, ради интереса:) У меня вот десятипальцевый слепой сам по себе выработался, и я сейчас этим доволен, как слон)