|
Крестики vs Нолики | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
1Сергей
14.04.11
✎
16:39
|
Сделал простейшие крести-нолики.
Беда только - думает достаточно долго (успел покурить пока он делал первый ход), да и не отличается особой сообразительностью. Если игрок ходит первым, то выиграть достаточно легко. Если компьютер ходит первым, то можно выйти максимум на ничью. Покритикуйте алгоритм, если у кого есть время, плз :) 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-го хода к ничьей свести может. А вот нолик не с любого. Хотя не уверен. Давайте проверим ;-)
|
||||||||||||||||
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
|
Таки да, ничья
|
||||||||||||||||
158
1Сергей
15.04.11
✎
14:12
|
Вы за нолик
_ _ _ _ Х _ Х О _ вот тут уже выиграть невозможно. Даже в моей игре |
||||||||||||||||
159
ado
15.04.11
✎
14:12
|
А вот попробуйте за нолик свести к ничьей вот эту позицию:
|
||||||||||||||||
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
|
две сотни
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |