Имя: Пароль:
1C
 
Крестики vs Нолики
,
0 1Сергей
 
14.04.11
16:39
1. Тебе заняться нечем? 0% (0)
2. Алгоритм тупой 0% (0)
3. Интересно 0% (0)
4. КГ/АМ 0% (0)
5. Другое... 0% (0)
Всего мнений: 0

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

Покритикуйте алгоритм, если у кого есть время, плз :)

http://zalil.ru/30862057
1 Lys
 
14.04.11
16:40
1.

Тебе заняться нечем?
2 Lys
 
14.04.11
16:40
2. Алгоритм не смотрел, но осуждаю... (с)

Алгоритм тупой
3 Lys
 
14.04.11
16:40
4.

КГ/АМ
4 1Сергей
 
14.04.11
16:41
(2) т.е. даже и не хочешь посмотреть?
5 Lys
 
14.04.11
16:42
(4) а) некогда б) лень в) у меня на работе есть занятие и поинтереснее.
6 Lys
 
14.04.11
16:42
+(5) И вообще я сегодня злой...
7 palpetrovich
 
14.04.11
16:43
гы, оказывается тут еще есть люди которые не писали Крестики-Нолики... ;)
8 Ненавижу 1С
 
гуру
14.04.11
16:43
а че на 7.7 ?
9 Lys
 
14.04.11
16:44
(7) Есть. как минимум я.
"А зачем?" (с)
10 1Сергей
 
14.04.11
16:44
(7) ты не поверишь, но на вражеском сайте классических крестиков-ноликов (3х3) я не нашел
11 1Сергей
 
14.04.11
16:44
(8) что роднее
12 Ёпрст
 
14.04.11
16:45
(0) опоздал ты
на инфо старте давно уже валяется
13 1Сергей
 
14.04.11
16:45
(12)см(10)
14 SaM58
 
14.04.11
16:45
(9)+1
не вижу смысла, да и времени нет всякой ерундой заниматься
15 palpetrovich
 
14.04.11
16:50
ну не знаю, мне в свое время было интересно
правда в моем варианте выиграть у компа нереально :)
16 1Сергей
 
14.04.11
16:51
(15) а как делал проверку? Через рекурсию?
17 Reset
 
14.04.11
16:51
Семерки под рукой нет, иначе бы с интересом посмотрел. Интересно, что за алгоритм для крестиков (да еще 3*3), который "думает достаточно долго (успел покурить пока он делал первый ход),".
Просто не представляю, чтО там такое надо написать, чтоб долго думало.
18 palpetrovich
 
14.04.11
16:52
(16) да какая там рекурсия? при размере 3х3? все передельно просто и тупо ;)
19 Попытка1С
 
14.04.11
16:52
Комп начинает с центра? У меня что-то залил не пашед.
20 1Сергей
 
14.04.11
16:53
(17) 362880 вариантов проверить не просто
21 1Сергей
 
14.04.11
16:53
(19) ошибка или думает долго?
22 1Сергей
 
14.04.11
16:54
(19) а... да, если комп ходит первый, то он оптимальным вариантом считает центр на первом ходе
23 Reset
 
14.04.11
16:55
Зачем проверять тристатыщ вариантов ? О_О
24 1Сергей
 
14.04.11
16:55
(23) глянь алгоритм :)
25 Reset
 
14.04.11
16:56
Не могу, нет семерки.
26 1Сергей
 
14.04.11
16:58
Сорри, за портянку

// Проверить насколько удачен вариант (рекурсивно)
//      Игрок - буква игрока ("Х" или "О"), для которого проверяем
//      Вариант - строка, длиною в 9 символов. Каждый символ отдельная ячейка со значением "Х","О" или " "
//      Рейтинг - текущий рейтинг (до проверки)
//      Уровень - уровень рекурсии. Сначала 1, потом 2 и т.д.
// Возвращает: Список значений с данными:
//      Рейтинг - Рейтинг проверяемого варианта
//      Вариант - Наилучший вариант для хода
Функция ПроверкаВарианта(Игрок, Знач Вариант, Знач Рейтинг=0, Знач Уровень=1)
   
   Рез=СоздатьОбъект("СписокЗначений");
   
   // Проверяем, не является ли данный вариант выигрышным/проигрышным
   // Считаем рейтинг и возвращаем
   Выигран = ВыигралВариант(Вариант);
   Если Выигран=БукваКомпьютера Тогда
       Рез.Установить("Рейтинг",Рейтинг+1*(9-Уровень));
       //Рез.Установить("Рейтинг",Рейтинг+1);
       //Рез.Установить("Рейтинг",Рейтинг+1*(9-Уровень));
       Рез.Установить("Вариант",Вариант);
       Возврат Рез;
   ИначеЕсли Выигран=БукваИгрока Тогда
       Рез.Установить("Рейтинг",Рейтинг-2*(9-Уровень));
       //Рез.Установить("Рейтинг",Рейтинг-1);
       //Рез.Установить("Рейтинг",Рейтинг-1*(9-Уровень));
       Рез.Установить("Вариант",Вариант);
       Возврат Рез;
   КонецЕсли;
   
   // Устанавливаем первоначальные данные
   КоличествоВариантов=0;
   СуммовойРейтинг=0;
   ЛучшийВариант="";
   ЛучшийРейтинг=-9999999999;
   
   // Цикл по ячейкам
   Для Идн=1 по 9 Цикл
       // Прверяем только пустые ячейки
       Если Сред(Вариант,Идн,1)=" " Тогда
           
           КоличествоВариантов = КоличествоВариантов + 1;
           
           // Непосредственно, проверяем вариант
           НовыйВариант = Лев(Вариант,Идн-1)+Игрок+Сред(Вариант,Идн+1);
           НовыйРезультат = ПроверкаВарианта(?(Игрок="О","Х","О"),НовыйВариант, Рейтинг, Уровень+1);
           
           // Суммируем рейтинги для рассчета среднего
           СуммовойРейтинг = СуммовойРейтинг + НовыйРезультат.Получить("Рейтинг");
           
           // Запоминаем лучший вариант
           Если НовыйРезультат.Получить("Рейтинг")>ЛучшийРейтинг Тогда
               ЛучшийРейтинг=НовыйРезультат.Получить("Рейтинг");
               ЛучшийВариант=НовыйВариант;
           КонецЕсли;
           
       КонецЕсли;
   КонецЦикла;
   
   // Рейтинг считается по среднему
   Если КоличествоВариантов>0 Тогда
       Рез.Установить("Рейтинг",СуммовойРейтинг / КоличествоВариантов);
       Рез.Установить("Вариант",ЛучшийВариант);
   Иначе
       Рез.Установить("Рейтинг",Рейтинг);
       Рез.Установить("Вариант",Вариант);
   КонецЕсли;
   
   Возврат Рез;
   
КонецФункции // ПроверкаВарианта
27 andrewalexk
 
14.04.11
16:59
:))...60000 раз за ход Рез=СоздатьОбъект("СписокЗначений");
- это сильно...
28 1Сергей
 
14.04.11
17:00
(27) да, надо переделать, наверно
29 mm_84
 
14.04.11
17:04
(28) первых ход компьютера надо рандомом делать) а то очень долго
30 andrewalexk
 
14.04.11
17:06
(28):) да и сам алгоритм неверный, и в х-о.ert (автор Лабенс) и в ttt1998.ert (автор Аврутин) есть и режим 3х3 и отклик компьютера - доли секунды
31 Rie
 
14.04.11
17:09
(26) Нечто загадочное. Постоянные строковые операции. Зачем-то список значений. Рейтинги (при полном переборе)...
32 Domovoi
 
14.04.11
17:09
(0)Как то он плохо думает)
33 Domovoi
 
14.04.11
17:11
+(32)Вроде варианты перебирает, а проигрывает, как так?
34 Domovoi
 
14.04.11
17:12
(0)А почему у меня крестики нолики 4х3?)
35 Rie
 
14.04.11
17:12
(33) Потому что "рейтинг считается по среднему"
36 Domovoi
 
14.04.11
17:14
(35)Я так понимаю выбирать надо из выйграшных вприантов, зачем пройгрышные испольщовать?
37 Rie
 
14.04.11
17:14
(36) Это к автору.
38 Domovoi
 
14.04.11
17:15
+(34)Не реально они 3х3, а визуально 4х3, последняя строка не доступна, но как то не хорошо.
39 Rie
 
14.04.11
17:15
Хотя в принципе возможность проиграть - это может быть как раз фича, а не баг. Для азартности :-)
40 Domovoi
 
14.04.11
17:21
(0)Выбран крестик я тыкнул 2 раза на клеточку крестик мой не появился, а комп задумался при чем на века. Какие то бракованные мне крестики нолики попались)))
41 Domovoi
 
14.04.11
17:23
+(40)О досчитал (10 мин вместо 2, примерно) в итоге не моего хода не его.
42 Domovoi
 
14.04.11
17:24
(42)Типа он понял что я его победю, и решил дурака включить типа я и не ходил?) "У меня все ходы записаны" )))
43 Domovoi
 
14.04.11
17:27
И кстате почему 362880 вариантов? На победном ходе перебор вариантов заканчивается и дальше эту ветку не надо перебирать, следовательно их меньше будет.
44 Дегенератор идей
 
14.04.11
17:31
ниче личного

Алгоритм тупой
45 Domovoi
 
14.04.11
17:34
Наверно не мешало бы еще отсекать случаи когда уже известно что будет ничья. Пусть там в первую попавшуюся ходит)
46 dervishsy
 
14.04.11
17:35
Тут есть "Полное дерево игровых ситуаций для игры крестики-нолики".
wiki:%D5%E5%F0%E8%EA%E8
сделай таблицу значений и усе.
47 Domovoi
 
14.04.11
17:37
(46)Так слишком легко, интереснее когда он как бы думает)
(0)Если запустить обработку и не нажать кнопку началь, то сходить при попытке сходить, крестик не ставиться, комп долго думает и тоже не делает ход.
48 ado
 
14.04.11
17:37
Крестики-нолики, вообще-то, полностью решенная игра.

Алгоритм тупой
49 Domovoi
 
14.04.11
17:40
Надо крестики нолики 5х5 на бесконечном квадрате ну или 1000х1000, там больше поле деятельности и время хода ограничить(если час будет думать, долговатенько), чтоб комп именно анализировал, а не просто перебор всего возможного)
50 Domovoi
 
14.04.11
17:42
(0)Что то у тебя вообшще не продуманно, я два раза подряд походил) Точнее комп подумал но нолик не поставил, фору дает?)
51 Domovoi
 
14.04.11
17:45
+(50)и  после того как победил. наверно должно быть заперщено ходить, а то за одну партию я 4 раза выйграл) (комп после победы уже не ходит)
52 1Сергей
 
14.04.11
18:03
(29) это не оптимально.
53 1Сергей
 
14.04.11
18:04
беда в том, что когда в первый раз запускается проверка функция должна вернуть оптимальный ход. А в процессе самой рекурсии нужно считать только рейтинг. Я сделал через СЗ.
Переделаю
54 Rie
 
14.04.11
18:23
(53) Зачем считать рейтинг? Это же крестики-нолики.
55 1Сергей
 
14.04.11
18:47
(54) а как ещё определить оптимальный вариант?
56 Domovoi
 
14.04.11
18:47
(54)Предположу, для отбора, какая комбинация приведет к наиболее вероятной победе.
57 acsent
 
14.04.11
18:51
Вообще то первый ход нужно делать в угол, тогда есть шансы выиграть ))
58 1Сергей
 
14.04.11
18:51
а как это определить.
Вот смотри. на поле несколько крестов и несколько нулей. Надо определить куда поставить ноль в данный момент. Перебираем все пустые клетки. Ставим туда ноль. Если на слудущем ходе игрок может выиграть, то у такого хода д.б. наихудший рейтинг. Если на следущем ходу компьютера будет много возможностей победить, то у такого хода должен быть наивысший рейтинг
59 acsent
 
14.04.11
18:53
Даже если делать полный перебор с возвратом (даже с учетом симметрии) и того не долго должен думать
60 ado
 
14.04.11
18:54
(56) Какая, в попу, наиболее вероятная победа?!?!?
Крестики-нолики это. Полностью. Решенная. Игра.
61 acsent
 
14.04.11
18:54
(59) *без учета симметрии
62 Domovoi
 
14.04.11
18:55
(60)Что значит полностью решенная?
63 Domovoi
 
14.04.11
18:56
+(62)Известны все варианты, как надо ходить? В чем интерес тогда писать? Весь смысл написать так чтоб думал, а не тупо из базы данных брал нужный ответ.
64 ado
 
14.04.11
18:58
(62) Это значит, что известна стратегия, гарантированно приводящая как минимум к ничьей при любой игре соперника. Для любой стороны.
65 Domovoi
 
14.04.11
19:04
(64)Ну автор пока ее не знает, поэтому сам додумывается как написать, каким методом и т.д. и в данном его методе есть рейтинг. Прозвучал вопрос зачем рейтинг, я выдвинул пердположение, зачем возмущаться?
66 1Сергей
 
14.04.11
20:20
Избавился от СЗ, но скорость выросла не достаточно
67 Господин ПЖ
 
14.04.11
20:21
>Избавился от СЗ, но скорость выросла не достаточно

избавься от 1с...
68 1Сергей
 
14.04.11
20:41
(67) лучше от мисты :)
69 andrewalexk
 
14.04.11
20:42
(68) :) в здешних кругах это зовется выпрашивать самобан...
70 Domovoi
 
14.04.11
22:52
(66) делал (45), может поможет?
71 zak555
 
14.04.11
23:18
жесть
72 Злопчинский
 
14.04.11
23:46
автор - "тупой"! еще во время моего детсва из спичечных коробков 3-на3 строился с амообучающийся автомат по игре в крестики-нулики
73 trdm
 
15.04.11
00:02
Под реверси отдельный сервак понадобится? :)
74 Denyk
 
15.04.11
01:00
Полным перебором:
75 Denyk
 
15.04.11
01:00
Время расчета: 4.809 сек.
Результат: 0
Кол-во вариантов: 94978
76 Denyk
 
15.04.11
01:01
0 - это ничья, выполнялось на 7.7 на проце E8200
77 Злопчинский
 
15.04.11
01:07
— Г-голубчики, — сказал Фёдор Симеонович озадаченно, разобравшись в почерках. — Это же п-проблема Бен Б-бецалеля. К-калиостро же доказал, что она н-не имеет р-решения.
— Мы сами знаем, что она не имеет решения, — сказал Хунта, немедленно ощетиниваясь. — Мы хотим знать, как её решать.
— К-как-то ты странно рассуждаешь, К-кристо… К-как же искать решение, к-когда его нет? Б-бессмыслица какая-то…
— Извини, Теодор, но это ты очень странно рассуждаешь. Бессмыслица — искать решение, если оно и так есть. Речь идет о том, как поступать с задачей, которая решения не имеет. Это глубоко принципиальный вопрос, который, как я вижу, тебе, прикладнику, к сожалению, не доступен. По-видимому, я напрасно начал с тобой беседовать на эту тему.

Алгоритм тупой
78 GROOVY
 
15.04.11
01:28
79 Злопчинский
 
15.04.11
02:30
(78) не, тут что-то сильно много коробков... или я дество не помню свое ;-) или все-таки была попроще конструкци я- описывалась 3-на-3 то ли в ЮТ то ли в ТМ... но суть как в ссылке...
80 DJ Anthon
 
15.04.11
04:29
и не стыдно тебе? я понимаю, если бы ты рэндзю сделал.. но 3х3?? это не крестики, это детсад.

КГ/АМ
81 1Сергей
 
15.04.11
08:16
(80) А чего добился ты? ©
:)
82 1Сергей
 
15.04.11
08:17
Странно, на первом ходу он делает 549946 итераций, а должен менее 362880
83 Rie
 
15.04.11
08:19
(79) С роботом из коробков, ЕМНИП, была "шестипешка" - до предела упрощённые шашки.
84 1Сергей
 
15.04.11
08:22
(83) про какого робота вы говорите, понять не могу
85 Rie
 
15.04.11
08:22
(82) Не странно. У тебя некоторые (вернее, большинство) вариантов просчитываются по нескольку раз.
86 Wasya
 
15.04.11
08:22
Когда космические корабли пороздят просторы... некоторые страдают ерундой.

КГ/АМ
87 Аннюточка
 
15.04.11
08:23
(0) А сделай не такие КН, а где поле не ограничено и надо зачеркнуть 5 крестиков или ноликов.
88 1Сергей
 
15.04.11
08:24
(85) можно пример? Если Вы имеете в виду зеркальные варианты, то я не об этом говорю
89 Rie
 
15.04.11
08:26
(84) Самообучающегося.
Берутся спичечные коробки. На каждом - рисуется возможная позиция в игре (с учётом симметрии - иначе ты разоришься, а спичечная фабрика станет процветать). В коробок вкладываются бумажки с возможными ходами.
Затем - человек делает ход. Ответный ход робота - случайная бумажка из соответствующего коробка.
Если робот проиграл - бумажка последнего хода из коробки вытаскивается.
Через некоторое время этот робот становится абсолютным чемпионом.
90 Lama12
 
15.04.11
08:26
(20)Ого... сколько вариантов в крестиках ноликах 3х3.
У меня всего два варианта (за крестики и за нолики). Решал задачу готовыми решениями вращая матрицу.
91 Rie
 
15.04.11
08:32
(88) А как ты считаешь количество итераций?
92 1Сергей
 
15.04.11
08:37
(91)

Перем итераций;

Процедура ПроверитьВариант(...)
   итераций=итераций+1;
   ...
КонецПроцедуры

Процедура ХодКомпьютера()
   ...
   итераций=0;
   ПроверитьВариант(...);
   Сообщить("итераций = "+итераций);
   ...
КонецПроцедуры
93 Rie
 
15.04.11
08:38
(92) Ну так и... 9! - это количество возможных последовательностей ходов. А ты считаешь все возможные положения на доске.
94 1Сергей
 
15.04.11
08:40
(93) нет, я как раз ходы считаю
95 1Сергей
 
15.04.11
08:43
Вот переделанная:

// Проверить насколько удачен вариант (рекурсивно)
//      Игрок - буква игрока ("Х" или "О"), для которого проверяем
//      Вариант - строка, длиною в 9 символов. Каждый символ отдельная ячейка со значением "Х","О" или " "
//      Рейтинг - текущий рейтинг (до проверки)
//      Уровень - уровень рекурсии. Сначала 1, потом 2 и т.д.
// Возвращает:
//      Если Уровень=1:
//          Наилучший вариант для хода
//      Если Уровень>1:
//          Рейтинг проверяемого варианта
Функция ПроверкаВарианта(Игрок, Знач Вариант, Знач Рейтинг=0, Знач Уровень=1)
   
   итераций=итераций+1;
   
   // Проверяем, не является ли данный вариант выигрышным/проигрышным
   // Считаем рейтинг и возвращаем
   Выигран = ВыигралВариант(Вариант);
   Если Выигран=БукваКомпьютера Тогда
       Возврат Рейтинг+1*(9-Уровень);
   ИначеЕсли Выигран=БукваИгрока Тогда
       Возврат Рейтинг-2*(9-Уровень);
   КонецЕсли;
   
   // Устанавливаем первоначальные данные
   КоличествоВариантов=0;
   СуммовойРейтинг=0;
   ЛучшийВариант=Вариант;
   ЛучшийРейтинг=-9999999999;
   
   // Цикл по ячейкам
   Для Идн=1 по 9 Цикл
       // Прверяем только пустые ячейки
       Если Сред(Вариант,Идн,1)=" " Тогда
           
           КоличествоВариантов = КоличествоВариантов + 1;
           
           // Непосредственно, проверяем вариант
           НовыйВариант = Лев(Вариант,Идн-1)+Игрок+Сред(Вариант,Идн+1);
           НовыйРезультат = ПроверкаВарианта(?(Игрок="О","Х","О"),НовыйВариант, Рейтинг, Уровень+1);
           
           // Суммируем рейтинги для рассчета среднего
           СуммовойРейтинг = СуммовойРейтинг + НовыйРезультат;
           
           // Запоминаем лучший вариант
           Если НовыйРезультат>ЛучшийРейтинг Тогда
               ЛучшийРейтинг=НовыйРезультат;
               ЛучшийВариант=НовыйВариант;
           КонецЕсли;
           
       КонецЕсли;
   КонецЦикла;
   
   // Рейтинг считается по среднему
   Если Уровень=1 Тогда
       Возврат ЛучшийВариант;
   Иначе
       Если КоличествоВариантов=0 Тогда
           Возврат Рейтинг;
       Иначе
           Возврат СуммовойРейтинг/КоличествоВариантов;
       КонецЕсли;
   КонецЕсли;
   
КонецФункции // ПроверкаВарианта
96 1Сергей
 
15.04.11
08:44
сейчас, на первый ход требуется 36 секунд. Раньше несколько минут требовалось
97 1Сергей
 
15.04.11
08:48
ладно, попробую зеркалировать
98 Rie
 
15.04.11
08:49
(95) Не надо считать рейтинг по среднему. Посмотри, что такое "минимакс" и "максимин".
99 1Сергей
 
15.04.11
09:10
Получилось намного быстрее!
100 1Сергей
 
15.04.11
09:12
Менее 2 сек
101 Patrio_
O_Muerte
 
15.04.11
09:15
(5)У меня меня тоже на работе есть занятие, только трындец какое неинтересное.

Тебе заняться нечем?
102 1Сергей
 
15.04.11
09:18
Если кому интересно, доработанный вариант:
http://zalil.ru/30866605
103 Rie
 
15.04.11
09:20
(102) Он у тебя всё ещё проигрывать умеет?
104 1Сергей
 
15.04.11
09:21
(103)да :(
Если игрок ходит первым, то можно выиграть. Если Комп первый, то максимум - ничья
105 Rie
 
15.04.11
09:23
(104) Ну почему же сразу ":("? Это же фича! Другие не проигрывают - а твоё могёт!

(Задумайся всё таки над своим "рейтингом по среднему").
106 1Сергей
 
15.04.11
09:25
пробовал я максимальный рейтинг, ваще лажа получается
107 st0lic
 
15.04.11
09:25
Виски лед и кола..

Интересно
108 Rie
 
15.04.11
09:29
(106) Не максимальный рейтинг, а "минимакс" (Google в помощь).
109 Rie
 
15.04.11
09:30
+(108) Ходы бывают разные - твои и противника.
И вопросы: "может ли противник (при правильной игре) стопудово выиграть?", "могу ли я (при правильной игре) его того-с?".
110 1Сергей
 
15.04.11
09:31
(109) при правильной игре обоих игроков можно максимум выйти на ничью
111 Rie
 
15.04.11
09:32
(110) Верно. Но зачем заботиться о втором игроке? Заботься о себе - чтобы
а) не проиграть;
б) при его ошибке - выиграть.
112 Rie
 
15.04.11
09:32
+(111) И "рейтинг" своего хода и хода противника - строй соответственно. То есть, по разному.
113 Rie
 
15.04.11
09:36
114 1Сергей
 
15.04.11
09:37
(111)вишь, как. Комп делает ход, он выбирает один из вариантов хода (1-ый уровень). Потом проверяет все возможноные ходы игрока (2-ой уровень), для них проверяет все возможные свои ходы (3-ий уровень).
Чем меньше уровень, тем "сильнее" он влияет на рейтинг. Т.е. Если на следующем ходу игрок может выиграть, то это наихудший вариант.

   Выигран = ВыигралВариант(Вариант);
   Если Выигран=БукваКомпьютера Тогда
       Возврат Рейтинг+1*(9-Уровень);
   ИначеЕсли Выигран=БукваИгрока Тогда
       Возврат Рейтинг-2*(9-Уровень); // тут я умножаю на 2, т.к. это намного хуже
   КонецЕсли;
115 Rie
 
15.04.11
09:41
(114) Не надо никаких уровней и никаких умножений.
Оценок всего 3:
- "могу и выиграть" (+1);
- "однако мне вставят" (-1);
- "ничья" (0).

Почитай алгоритмы.
116 1Сергей
 
15.04.11
09:44
(115)так вообще лажа. Если на следущем ходу у компьютера есть возможность выграть 3-мя комбинациями (+1+1+1), но игрок может выиграть всего одной комбинацией, но уже на следующем ходе (-1). Рейтинг = +1+1+1-1= 2. Вроде круто, но перспектива проиграть более вероятна
117 1Сергей
 
15.04.11
09:46
(116) поэтому я и сделал зависимость от уровня и считаю "по средней"
118 1Сергей
 
15.04.11
09:47
На самом деле задачка довольно интересная. Найдите время, попробуйте реализовать то же самое. Вам понравится
119 supremum
 
15.04.11
09:52
(116) Этого вполне достаточно.

Для хранения позиций использовал битовые строки.
120 Rie
 
15.04.11
09:56
(116) А для этого использовать отсечение. Если может (гарантированно) выиграть следующим ходом - незачем рассматривать все варианты, нужно форсировать выигрышные.

(118) Кгм... см. (7) :-)
121 supremum
 
15.04.11
09:58
+(119) По первому ходу все очень просто. Есть три варианта (с учетом симметрии) первые два (1,1) (2,2) - не проигрышные при оптимальной стратегии, вариант (1,2) - ведет к проигрышу, при оптимальной стратегии. Зачем делать полный перебор при первом ходе не ясно.
122 Rie
 
15.04.11
10:04
(121) Эээ... как это "ведёт к проигрышу"? Вничью - при любом первом ходе можно свести.
123 supremum
 
15.04.11
10:07
(122) Да, точно, это второй ход у нас в (1,2), при первом (1,1) приведет к проигрышу.
124 ado
 
15.04.11
10:12
(122) Как это при любом? При первом ходе в боковую клетку -- проиграешь.
125 supremum
 
15.04.11
10:15
(120)
Сыграем? )
(строка, столбец)

(1,2)
126 supremum
 
15.04.11
10:15
(125) к (124)
127 1Сергей
 
15.04.11
10:17
_ Х _
_ _ _
_ _ _

так проще
128 1Сергей
 
15.04.11
11:46
Продолжаю бессмысленное занятие :)

Новая игра!
Быки и коровы. Тоже знакомое с детства.
http://zalil.ru/30867176
129 andrewalexk
 
15.04.11
11:53
:) уже лучше...но обрати внимание на механизм меток цифр в обработке bc.ert от БухГеймс
130 andrewalexk
 
15.04.11
11:55
:) и ты путаешь куда чьи ходы писать
131 1Сергей
 
15.04.11
11:57
(129)(130) ты про что?
132 andrewalexk
 
15.04.11
12:01
:) я про (128)
133 YHVVH
 
15.04.11
12:06
слов нет

Алгоритм тупой
134 YHVVH
 
15.04.11
12:06
и даже так

Тебе заняться нечем?
135 Domovoi
 
15.04.11
12:14
(128)В иснтрукции указано что загадывается 3-х значное число, вроде там 4 надо.
136 Domovoi
 
15.04.11
12:15
+(135)А не вообще 5 вроде загадывалось, в поле ввода дает 4, а потом исправляет на 3.
137 1Сергей
 
15.04.11
12:16
(135) разные варианты есть. У нас самая популярная была 3-хзначная
138 Domovoi
 
15.04.11
12:20
(137)А почему игроку не дается последний ответный ход?) Как-то не честно.
139 1Сергей
 
15.04.11
12:22
(138) сначала ходит игрок, потом комп. Всё честно
140 1Сергей
 
15.04.11
12:23
Кстати, мухлевать пробовали? :)
141 Domovoi
 
15.04.11
12:24
(140)Да), Только было бы не плохо, чтоб после сообщения, опять спрашивало какой ответ? А то можно просто ошибиться и не исправишь уже(если к примеру ошибся именно в последнем ходе)
142 andrewalexk
 
15.04.11
12:25
(140) :) мы не филоним..мы ошибаемся
143 Domovoi
 
15.04.11
12:28
(139)Что-то я не сразу понял, первый раз окно появляется думал спрашивает мое задуманное число, а это уже ход) Ну тогда не честно по отношению к компьютеру)
144 1Сергей
 
15.04.11
12:30
(143) нет, сначала делаются оба хода, потом проверка
145 Domovoi
 
15.04.11
12:35
(144)Да я ошибся.
146 1Сергей
 
15.04.11
12:46
Есть еще видео-покер, но я его уже выкладывал
147 ado
 
15.04.11
13:27
(125)(127) Не, крестик, вроде, с любого 1-го хода к ничьей свести может. А вот нолик не с любого. Хотя не уверен.  Давайте проверим ;-)

_ Х _
_ 0 _
_ _ _
148 ado
 
15.04.11
13:39
(147) Да, точно, крестик проиграл. При любом раскладе я 3-м ходом делаю вилку.
149 Rie
 
15.04.11
13:51
(148)
- Х -
- 0 -
Х - -
150 1Сергей
 
15.04.11
13:52
(148) можно на ничью вывести
151 ado
 
15.04.11
13:53
(148) Хотя не, наврал. Не при любом.
152 Эмбеддер
 
15.04.11
13:57
количество переборов можно уменьшить (если это еще не учли), если игрок не хочет проиграть, первый нолик должен быть обязательно на смежной клетке с ноликом.
а вообще можно сразу записать все возможные варианты игры в таблицу значений, их немного :)
даже можно уменьшить в 4 раза все варианты за счет поворота поля и в 2 раза, отобразив зеркально

Тебе заняться нечем?
153 Эмбеддер
 
15.04.11
13:58
152+ смежной клетке с ноликом = смежной клетке с крестиком
154 1Сергей
 
15.04.11
13:59
(152) зеркальность учел
155 Эмбеддер
 
15.04.11
13:59
если интересно, могу свой вариант кинуть (на турбо паскале делал) 10 лет назад, поле размером наверное 64x64 - уже не помню. думает очень быстро
156 Эмбеддер
 
15.04.11
14:00
turbo vision
157 ado
 
15.04.11
14:04
Таки да, ничья

0 Х _
_ 0 _
Х _ _
158 1Сергей
 
15.04.11
14:12
Вы за нолик
_ _ _
_ Х _
Х О _

вот тут уже выиграть невозможно. Даже в моей игре
159 ado
 
15.04.11
14:12
А вот попробуйте за нолик свести к ничьей вот эту позицию:

_ 0 _
_ Х _
_ _ _
160 1Сергей
 
15.04.11
14:12
(159) дык, первые Х ходять
161 Rie
 
15.04.11
14:13
(158) А это что такое?
162 ado
 
15.04.11
14:13
(158) Да-да. За нолик не любой первый ход будет правильным.
163 Domovoi
 
15.04.11
14:13
(155)64x64? а собрать сколько надо?
Выкладывайте
164 1Сергей
 
15.04.11
14:14
(155) в больших полях совсем другая стратегия. Это совсем другая игра
165 ado
 
15.04.11
14:14
(161) Это первый ход нолика, который приводит к проигрышу.
166 Rie
 
15.04.11
14:14
(163) На таком поле - 5 в ряд.
167 supremum
 
15.04.11
14:18
Еще есть
wiki:Гомоку
168 supremum
 
15.04.11
14:18
+(167) У Даля называется как «Херики-Оники»
169 Domovoi
 
15.04.11
14:21
(167)А почему гомоку? Го называется, и писать ее загнешься) Несколько лет назад играл, так там даже не за очень крутого уже несколько сотен тыщ баксов давали.
170 Domovoi
 
15.04.11
14:22
+(169)Извиняюсь не дочитал) Ошибся
171 DJ Anthon
 
15.04.11
19:13
(81) реши, к примеру, японский кроссворд. желательно, цветной
172 Эмбеддер
 
15.04.11
20:01
(163) Выложил исходник шашек и крестиков-ноликов и исполняемый файл крестиков-ноликов http://depositfiles.com/files/3922bilfi
173 Domovoi
 
15.04.11
20:14
(172)Типа еще и заплотить?)
174 Domovoi
 
15.04.11
20:16
+(173)А не скачал, вначале написало, типа тока Gold)
175 Domovoi
 
15.04.11
20:19
(172)Что-то контупер быстро проигрывает)
176 Domovoi
 
15.04.11
20:19
Кстате погуглил, написано что нет норм компа для такой штуки.
177 Эмбеддер
 
15.04.11
20:24
(175) Раз "контупер", значит, получилось скачать.
Я на себе тестировал, меня обычно выигрывал :)
178 NS
 
15.04.11
20:30
(176) Для какой штуки?!
179 NS
 
15.04.11
20:31
Для шашек или крестиков-ноликов?
В крестики-нолики (гомоку, варианты гомоку с ограничениями, рензю), и все популярные виды шашек - комп. вынесет любого ченовека.
180 Domovoi
 
15.04.11
20:52
(178)Для крестиков ноликов
181 Domovoi
 
15.04.11
20:56
(179)В крестики нолики не вынесет, за крестики человек выйграет, если комп норм то закрестики выйграет. Хотя я не играл на ограниченном поле может там и возможно к нечье свести.
182 Domovoi
 
15.04.11
21:26
+(181)Да наверно и в шашки не вынесет.
183 Domovoi
 
15.04.11
21:28
+(182)Т.е. если к примеру за белых полюбе победа, то он сыграет так же как и человек.
184 NS
 
15.04.11
21:30
(181) В крестики нолики пять в ряд без ограничений - начинающий форсированно выигрывает. Но программа играет на порядок сильнее человека. Я конечно понимаю что мастер рензю, но заявление (176) очень странное.

вот далеко не чемпионы двадцатилетней давности -
cruz http://www.cruzgame.com/ http://gomocup.wz.cz/download/CRUZSETUP.EXE
http://minhbq.addr.com/bcaro.html (эта из свежих)
http://mysite.verizon.net/msmammek/noesis.zip

Поиграй. с 92-года никто гомоку не пишет - ибо настолько сильно программы стали играть - что смысмл пропал.
185 NS
 
15.04.11
22:04
http://gomocup.wz.cz/gomoku/download.php
Вот тут вообще уйма программ.
186 Domovoi
 
15.04.11
22:18
(184)Ну я зашел на сайт фидирации рензю, там написано было что проги нормальной нет. Ну может я криво смотрел хз
187 NS
 
15.04.11
22:24
(186) Какой сайт? Кем написано?
188 Domovoi
 
15.04.11
22:43
(187)Ну я так не помню, лазил искал, где бы поиграть в нете, и наткнулся на сайт федерации а там прям текстом и написано, что прогу не найти реально играть мона тока человек vs человек.
(184)http://www.cruzgame.com/ - вот этого бота уже выйграл, на последнем уровне, даже за нолики. Остальных нада глянуть, да и самому еще вспомнить как играть. Надо вспомнить безпройгрышную комбинацию за крестики.
189 NS
 
15.04.11
23:49
(188) Ты не то, и не там прочитал. Соревнования программ в чистое гомоку и рензю не проводятся, ибо играют они практически идеально, и конечно-же значительно сильнее человека.
190 Domovoi
 
16.04.11
22:29
(184)http://minhbq.addr.com/bcaro.html - этого тоже выйграл, есть сильнее?
191 coding
 
16.04.11
22:38
(0) Домино... и думает быстро:)
на инфорстаре .ru/public/75564/
192 andrewalexk
 
16.04.11
23:16
:) на снеговике каждый дурак сможет
193 Staffa
 
17.04.11
00:59
(188) ты попутал немного - достойных программ нет для го.
194 Злопчинский
 
17.04.11
01:11
(193) для го недавно что-то придумали .. какой-но новый подход - сразу скилл комппрограмм резко вырос.. NS наверное лучше знает
195 Domovoi
 
17.04.11
02:28
(193)Всмысле попутал? Где я написал что для го есть норм программа? Это мы тут про крестики нолики) Про ГО сейчас не знаю, лет 5 назал точно не было, самый сильный на 6 кю тока был.
196 Domovoi
 
17.04.11
02:29
+(195)Помню за бота на 1 ученический дан давали 200к$)
197 NS
 
17.04.11
10:39
(194) Го - это совсем другая игра. Тут обсуждается ГоМоку.
198 NS
 
17.04.11
10:40
(194) В Го действительно произошел резкий скачек в силе программ, но пока они играют слабее сильных мастеров.
199 NS
 
17.04.11
10:43
(190) Конечно есть. Внимательно посмотри (185)
Там на сайте есть результаты чемпионатов.
Из Российских сильнейший GoRo
200 zak555
 
17.04.11
11:01
две сотни
AdBlock убивает бесплатный контент. 1Сергей