все правила форумной игры Дуэль Программистов
| |
noname | Дата: Четверг, 10 Октября 2013, 14:24 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| ОБЩАЯ ИНФОРМАЦИЯ:
Дуэль Программистов- походовая игра с полной информацией и без случайностей.
для таких игр важно, чтобы не было простой выигрышной стратегии. потому что как только выигрышная стратегия будет найдена, играть станет не интересно.
выигрышная стратегия в таких играх есть по-любому, важно только, чтобы она не была слишком простой. существует довольно простое доказательство того, что в шахматах у одной из сторон есть беспроигрышная стратегия- но это не делает игру в шахматы проще ( в шахматах возможна ничья, поэтому для них гарантируется наличие не выигрышной, а беспроигрышной стратегии ).
ясно что если выигрышная стратегия существует, то она существует только у одной из сторон.
и я предлагаю вам попробовать изменить мои правила игры Дуэль Программистов или вообще придумать свои так, чтобы: а) была невозможна ничья б) её выигрышную стратегию искали бы неделю, а то и дольше
далее я буду размещать ссылки на правила с указанием авторства и номера придуманных этим автором правил.
ПРАВИЛА:
первые правила от noname ( уже не актуальны из-за выявленных во время игры недостатков )
вторые правила от noname ( уже не актуальны- существует слишком простая выигрышная стратегия )
третьи правила от noname ( сейчас это лучшие правила из всех, по которым проводились игры )
КАК ДОБАВИТЬ ВАШИ ПРАВИЛА:
чтобы я добавил ваши правила в список, по вашим правилам должно быть сыграно пять игр. и если по результатам этих игр вы всё ещё будете считать правила хорошими, я ( по вашей просьбе ЛС ) добавлю их в список.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 11 Октября 2013, 01:29 |
|
| |
Lasmelan | Дата: Четверг, 10 Октября 2013, 14:27 | Сообщение # 2 |
Construct 2 & Classic
Сейчас нет на сайте
| noname, Я выигрышную стратегию примерно понимаю, но это секрет. И тема, наверное, была создана, чтобы ты узнал выигрышную стратегию и начал выигрывать! Цитата noname ( ) а) была невозможна ничья А она возможна?
Мое портфолио:
|
|
| |
noname | Дата: Четверг, 10 Октября 2013, 16:11 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Форумная игра - "Дуэль программистов", версия вторая, исправленная.
1. Правила игры:
Изначально заданы четыре строчки программы:
00 bool A = false 01 bool B = false 19 out(A) // выводим A 20 out(B) // и B
строки программы изменять нельзя, но можно добавлять недостающие (с номерами от 02 до 18)
два соперника поочерёдно добавляют по одной строчке (или могут пропускать ход).
выигрыш одного означает проигрыш другого и наоборот.
ещё на своём ходу вместо добавления строчки или пропуска хода игрок может объявить что программа зациклилась. и если он прав, то он ВЫИГРАЛ, если он не прав, то он ПРОИГРАЛ.
если все строчки заполнены или если ход был пропущен два раза подряд (один раз одним игроком и сразу после этого другим), программа запускается на исполнение.
если программа выдала различные значения A и B, то ВЫИГРАЛ первый игрок. если программа выдала одинаковые значения A и B, то ВЫИГРАЛ второй игрок. если программа зациклилась то ПРОИГРАЛ тот кто последним добавлял строчку.
добавлять можно только такие строчки:
dd A = not(A) dd B = not(B) dd if(A) goto dd // goto посылает лишь на строчки в пределах от 02 до 018 включительно dd if(B) goto dd
где d - любая цифра ( 0..9 )
повторяю- добавлять можно ТОЛЬКО такие строчки которые были перечислены. нельзя писать A = not(B) или как-то ещё.
пример игры по этим правилам смотрите здесь. ( вообще та тема нужна чтобы искать соперников и договариваться с ними об игре, но вот так исторически сложилось, что там ранее проводились игры).
***
ВАЖНО: если вы уже походили- не редактируйте сообщение- это может вносить ужасную путаницу. лучше напишите своему сопернику сообщение с просьбой разрешить вам переходить и если он разрешит- пишите сообщение с другим ходом. редактировать сообщения не надо. самовольное перехаживание недопустимо. лучше лишний раз переспросить соперника форумным сообщением, чем что-то редактировать.
//------------------------------------------------------------------------------------------------
Цитата Lasmelan ( ) А она возможна? surprised
по существующим правилам ничья невозможна. и хорошо бы, чтобы новые правила тоже удовлетворяли бы этому условию.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 11 Октября 2013, 00:22 |
|
| |
Lasmelan | Дата: Четверг, 10 Октября 2013, 18:13 | Сообщение # 4 |
Construct 2 & Classic
Сейчас нет на сайте
| Цитата noname ( ) но если кто хочет играть по этим правилам- играйте )) Я бы поиграл.
Мое портфолио:
|
|
| |
noname | Дата: Четверг, 10 Октября 2013, 21:18 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| ещё можно придумать что-то в этом духе:
Код 00 byte N = 0 01 byte M = 0
19 if( нечётное(N) ) out ( "первый игрок выиграл" ) 20 if( чётное(N) ) out ( "второй игрок выиграл" )
добавлять можно такие строчки:
Код dd N++ dd M++
dd if (N>M) goto dd dd if (N<M) goto dd // goto посылает строго в пределах от 02 до 18
при этом переменные типа byte могут иметь значения от 0 до 255. если N равно 255 то после N++ значение этой переменной станет равно нулю.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 11 Октября 2013, 00:01 |
|
| |
pelmenka | Дата: Четверг, 10 Октября 2013, 22:39 | Сообщение # 6 |
Драгоценный Тунеядец
Сейчас нет на сайте
| Вот у меня идейка появилась. А как насчет общей переменной P? Над переменой c доступны действия:
if(a) P = not(P) if(b) P = not(P) if(P) goto dd //dd любое число от 4 до 16
Сталина в каждый дом!
Сообщение отредактировал pelmenka - Четверг, 10 Октября 2013, 22:42 |
|
| |
noname | Дата: Пятница, 11 Октября 2013, 00:19 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Форумная игра - "Дуэль программистов", версия третья.
1. Правила игры:
Изначально заданы четыре строчки программы:
00 bool A = false 01 bool B = false 19 if( A != B ) out ( "выиграл первый игрок" ) 20 if( A == B ) out ( "выиграл второй игрок" ) // можно вместо слов "такой-то игрок" подставить его ник.
строки программы изменять нельзя, но можно добавлять недостающие (с номерами от 02 до 18)
два соперника поочерёдно добавляют по одной строчке (или могут пропускать ход).
выигрыш одного означает проигрыш другого и наоборот.
ещё на своём ходу вместо добавления строчки или пропуска хода игрок может объявить что программа зациклилась. и если он прав, то он ВЫИГРАЛ, если он не прав, то он ПРОИГРАЛ.
если все строчки заполнены или если ход был пропущен два раза подряд (один раз одним игроком и сразу после этого другим), программа запускается на исполнение.
если программа выдала различные значения A и B, то ВЫИГРАЛ первый игрок. если программа выдала одинаковые значения A и B, то ВЫИГРАЛ второй игрок. если программа зациклилась то ПРОИГРАЛ тот кто последним добавлял строчку.
первый игрок может добавлять только такие строчки:
dd A = not(A) dd if(A) goto dd // goto посылает лишь на строчки в пределах от 02 до 018 включительно
где d - любая цифра ( 0..9 )
второй игрок может добавлять только такие строчки: dd B = not(B) dd if(B) goto dd
повторяю- добавлять можно ТОЛЬКО такие строчки которые были перечислены.
пример игры по этим правилам смотрите здесь.
***
ВАЖНО: если вы уже походили- не редактируйте сообщение- это может вносить ужасную путаницу. лучше напишите своему сопернику сообщение с просьбой разрешить вам переходить и если он разрешит- пишите сообщение с другим ходом. редактировать сообщения не надо. самовольное перехаживание недопустимо. лучше лишний раз переспросить соперника форумным сообщением, чем что-то редактировать.
Добавлено (11.10.2013, 00:19) --------------------------------------------- //------------------------------------------------------------------------------------------------
Цитата pelmenka ( ) if(a) P = not(P) if(b) P = not(P) if(P) goto dd //dd любое число от 4 до 16
интересная идея. а я сейчас продумываю организационный вопрос и завтра организую иначе свои темы про дуэли.
вообще у меня сейчас напряжёнка со временем, поэтому придётся обходиться без меня. но я вам не особо-то и нужен.
ПЛАН ТАКОЙ:
в ЭТОЙ теме придумываете и обсуждаете какие угодно правила.
а ЗДЕСЬ- объявляете, что хотите играть, договариваетесь по каким правилам играть. в-общем, ищете соперника и договариваетесь с ним.
а играть идёте СЮДА- в тему для всех Дуэлей Программистов по любым правилам.
шапки тем я изменю соответственно.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 11 Октября 2013, 00:27 |
|
| |
pelmenka | Дата: Пятница, 11 Октября 2013, 01:36 | Сообщение # 8 |
Драгоценный Тунеядец
Сейчас нет на сайте
| Мои правила. Добавлять пока не надо Правила пельменя - редакция ТРЕТЬЯ Цитата Форумная игра - "Дуэль программистов", версия пельменя. 1. Правила игры: В игре присутствуют 3 булевых переменных (0,1) : A, B и G Переменная G общая, т.е. с ней могут оперировать оба игрока. Переменая A принадлежит первому игроку, соответственно переменная B принадлежит второму. Все переменные при старте равны false Игрокам дается 20 чистых строк, на которых можно делать ходы. Первый игрок может добавлять следующие строки: - A = not(A) //инвенирование переменной A
- if(A) G = not(G) //таким способом можно инвентировать только общую переменную
- if(A) goto dd //переход на строку xx, где xx любое число от 2 до 17
- if(G) goto dd //тоже, что и выше, только проверяется G
Второй игрок может писать следующие строчки: - B = not(B) //инвенирование переменной B
- if(B) G = not(G) //таким способом можно инвентировать только общую переменную
- if(B) goto dd //переход на строку xx, где xx любое число от 2 до 17
- if(G) goto dd //тоже, что и выше, только проверяется G
строки программы изменять нельзя, но можно добавлять недостающие (с номерами от 00 до 19 (20 строк)) просто G = not(G) писать нельзя два соперника поочерёдно добавляют по одной строчке (или могут пропускать ход). выигрыш одного означает проигрыш другого и наоборот. ещё на своём ходу вместо добавления строчки или пропуска хода игрок может объявить что программа зациклилась. и если он прав, то он ВЫИГРАЛ, если он не прав, то он ПРОИГРАЛ. если все строчки заполнены или если ход был пропущен два раза подряд (один раз одним игроком и сразу после этого другим), программа запускается на исполнение. если программа выдала различные значения A и B, то ВЫИГРАЛ первый игрок. если программа выдала одинаковые значения A и B, то ВЫИГРАЛ второй игрок. если программа зациклилась то ПРОИГРАЛ тот кто последним добавлял строчку. повторяю- добавлять можно ТОЛЬКО такие строчки которые были перечислены. Свои сообщения редактировать нельзя. Игрок, отредактировавший сообщение автоматически пропускает ход.
ВАЖНО После if(G) может идти только goto xx, где xx любое число от 02 до 17, да и вообще goto переходит только на строки от 02 до 17 Псле if(A) или if(B) инвентировать можно только G
Постарался расписать максимально подробно, посмотрим, что выйдет
Сталина в каждый дом!
Сообщение отредактировал pelmenka - Четверг, 17 Октября 2013, 19:00 |
|
| |
al_mt | Дата: Суббота, 12 Октября 2013, 00:32 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Ехехе... А автомат написать, что ни кто не попытался?
|
|
| |
Lasmelan | Дата: Среда, 16 Октября 2013, 19:31 | Сообщение # 10 |
Construct 2 & Classic
Сейчас нет на сайте
| Я выдвигаю мои правила и прошу игроков проявить интерес!
Форумная игра - "Дуэль программистов", версия "Не заскучаешь!" 0.85 (Версия 1.0 появится после тестирования). Создатель этой версии - Lasmelan, использование этих правил на gcup разрешено при указании автора, использование этих правил на других сайтах пока запрещено.
Правила игры:
Изначально заданы четыре строчки программы:
00 bool A = false 01 bool B = false 19 out(A) // выводим A 20 out(B) // и B
Cтроки программы изменять нельзя, но можно добавлять недостающие (с номерами от 02 до 18)
Два соперника поочерёдно добавляют по одной строчке (или могут пропускать ход).
Выигрыш одного означает проигрыш другого и наоборот.
Ещё на своём ходу вместо добавления строчки или пропуска хода игрок может объявить что программа зациклилась. И если он прав, то он выиграл, если он не прав, то он проиграл.
Если все строчки заполнены или если ход был пропущен два раза подряд (один раз одним игроком и сразу после этого другим), программа запускается на исполнение.
Если программа выдала различные значения A и B, то выиграл первый игрок. Если программа выдала одинаковые значения A и B, то выиграл второй игрок. Если программа зациклилась, то проиграл тот, кто последним добавлял строчку.
Изначально:
Первому игроку добавлять можно только такие строчки:
A = not(A) if(B) goto dd
Где dd - числа от 03 до 17.
Второму игроку добавлять можно только такие строчки:
dd B = not(B) dd if(A) goto dd
Но, если один игрок пропустил ход, второй получает в распоряжение его переменную и количество возможных ходов второго игрока увеличивается до следующего хода первого:
A = not(A) B = not(B) if(A) goto dd if(B) goto dd
Но, когда первый игрок походил, возможные ходы игроков становятся исходными.
ВАЖНО: Редактирование сообщений по ЛЮБЫМ причинам запрещено. Игрок, отредактировавший сообщение, считается проигравшим.
********************************* Дуэль программистов, версия "Не заскучаешь!" 0.85 by Lasmelan ******************************
Мое портфолио:
Сообщение отредактировал Lasmelan - Воскресенье, 20 Октября 2013, 21:43 |
|
| |
|