Понедельник, 25 Ноября 2024, 16:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
все правила форумной игры Дуэль Программистов
nonameДата: Четверг, 10 Октября 2013, 14:24 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
ОБЩАЯ ИНФОРМАЦИЯ:

Дуэль Программистов- походовая игра с полной информацией и без случайностей.

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

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

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

и я предлагаю вам попробовать изменить мои правила игры Дуэль Программистов или вообще придумать свои так, чтобы:
а) была невозможна ничья
б) её выигрышную стратегию искали бы неделю, а то и дольше smile

далее я буду размещать ссылки на правила с указанием авторства и номера придуманных этим автором правил.

ПРАВИЛА:

первые правила от noname
( уже не актуальны из-за выявленных во время игры недостатков )

вторые правила от noname
( уже не актуальны- существует слишком простая выигрышная стратегия )

третьи правила от noname
( сейчас это лучшие правила из всех, по которым проводились игры )

КАК ДОБАВИТЬ ВАШИ ПРАВИЛА:

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


все правила форумной игры Дуэль Программистов

Сообщение отредактировал noname - Пятница, 11 Октября 2013, 01:29
LasmelanДата: Четверг, 10 Октября 2013, 14:27 | Сообщение # 2
Construct 2 & Classic
Сейчас нет на сайте
noname, Я выигрышную стратегию примерно понимаю, но это секрет. И тема, наверное, была создана, чтобы ты узнал выигрышную стратегию и начал выигрывать! biggrin
Цитата noname ()
а) была невозможна ничья

А она возможна? surprised


Мое портфолио:
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 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
Драгоценный Тунеядец
Сейчас нет на сайте
Мои правила. Добавлять пока не надо smile
Правила пельменя - редакция ТРЕТЬЯ

Цитата

Форумная игра - "Дуэль программистов", версия пельменя.

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

Постарался расписать максимально подробно, посмотрим, что выйдет wink


Сталина в каждый дом!

Сообщение отредактировал pelmenka - Четверг, 17 Октября 2013, 19:00
al_mtДата: Суббота, 12 Октября 2013, 00:32 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Ехехе... А автомат написать, что ни кто не попытался? smile
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг