Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

Программа поиска мата в 3 хода (шахматы)   Найти похожие ветки 

 
Vasya.ru   (2004-10-20 21:47) [0]

Нужно написать программу, ищущую мат в 1 - 2 - 3 хода в любой шахматной позиции. Где можно найти решение/алгоритмы этой задачи?


 
KilkennyCat ©   (2004-10-20 21:49) [1]

и даже в позиции:
Белые: Король А1
Черные: Король А3


 
SergP ©   (2004-10-20 23:08) [2]


>  [1] KilkennyCat ©   (20.10.04 21:49)
> и даже в позиции:
> Белые: Король А1
> Черные: Король А3


В сабжевом посте было написано "ищущую мат в 1 - 2 - 3 хода" ,
а искать и находить - это разные вещи... :-)))


 
SergP ©   (2004-10-20 23:09) [3]


>  [1] KilkennyCat ©   (20.10.04 21:49)
> и даже в позиции:
> Белые: Король А1
> Черные: Король А3


В сабжевом посте было написано "ищущую мат в 1 - 2 - 3 хода" ,
а искать и находить - это разные вещи... :-)))


 
Gero ©   (2004-10-20 23:29) [4]


> Где можно найти решение/алгоритмы этой задачи?

Нигде.


 
KilkennyCat ©   (2004-10-21 00:12) [5]


> SergP ©   (20.10.04 23:08) [2]


Тогда автор - из Маклаудов ;)


 
GuAV ©   (2004-10-21 00:15) [6]

В TP7.0 есть демка - шахматы. на Turbo Vision и под Windows.


 
KilkennyCat ©   (2004-10-21 00:18) [7]

вообще-то, число заказанных ситуаций конечно. Так что можно просто их все описать. в каком-нить массиве. Что там за терабайтами идет?


 
GuAV ©   (2004-10-21 00:47) [8]

KilkennyCat ©   (21.10.04 0:18) [7]
Что там за терабайтами идет?

function IntToSizeInUnits(I: Int64): string;
const
 Units: array[0..6] of string =
 ("Б","кБ","МБ","ГБ","ТБ","ПБ","ЭБ");
var J: Integer;
begin
 J := 0;
 while I >= (1 shl 10) do
 begin
   Inc(J);
   I := I shr 10;
 end;
 Result := IntToStr(I) + " " + Units[J];
end;


 
VMcL ©   (2004-10-21 07:47) [9]

>>KilkennyCat ©  (21.10.04 00:18) [7]

"пета-" (10^15), потом "экза-" (10^18).


 
SergP ©   (2004-10-21 07:49) [10]

Можно сделать программу тупо перебирающую все возможные варианты для 3 ходов, но думать прога будет долго. :-))


 
VMcL ©   (2004-10-21 08:09) [11]

>>SergP ©  (21.10.04 07:49) [10]

Можно прикинуть ориентировочное количество вариантов на один ход. Больше всего вариантов, как походить, у ферзя - максимально 3 * 7 + 6 = 27, если он стоит в одной из четырех центральных клеток и все варианты хода для него доступны. Фигур максимально 16 с одной стороны. Итого на каждый полуход (т. е. ход одной из сторон) получаем верхний предел в 16 * 27 = 432 варианта. Реальное количество вариантов на полуход намного меньше, поскольку не все ходы доступны и другие фигуры имеют меньше возможностей походить. Для полного хода получаем 432 * 2 = 864. На три полных хода: 864 ^ 3 = 644 972 544 варианта. Это самый, самый верхний предел (если я все правильно посчитал). На самом же деле вариантов будет намного меньше. Можно посчитать точнее хотя бы, если учесть максимально возможное количество ходов для каждой из фигур.


 
KilkennyCat ©   (2004-10-21 08:38) [12]

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


 
KilkennyCat ©   (2004-10-21 08:43) [13]

вот, выдержкы из сети:

"Существует 1 695 188 229 100 544 * 10^12 вариантов только первых десяти ходов в шахматах.
Общее число возможных вариантов шахматных партий равно 2*10^116"

"число возможных игровых вариантов невероятно велико : подсчитано, что оно составляет 10750, или 1 с последующими 750 нолями."


 
SergP ©   (2004-10-21 08:44) [14]


>  [12] KilkennyCat ©   (21.10.04 08:38)
> но в конечном итоге вариантов намного больше, так как посчитаны
> варианты трех ходов, но не для всех позиций.


я что-то не понял. исходную позицию задает юзер. просчитать остается только те позиции, которые могут получиться если сделать до 3-х ходов, остальные нас не интересуют...


 
KilkennyCat ©   (2004-10-21 08:48) [15]


> SergP ©   (21.10.04 08:44) [14]


остальные нас не интересуют только в данный момент. в следующий раз юзер задаст другую позицию.


 
VMcL ©   (2004-10-21 10:33) [16]

>>KilkennyCat ©  (21.10.04 08:38) [12]

Аргументируй. Какие позиции не учтены?


 
VMcL ©   (2004-10-21 10:40) [17]

>>KilkennyCat ©  (21.10.04 08:43) [13]

Ссылку в студию.

>1 695 188 229 100 544 * 10^12

"~1,695*10^27" не проще написать?

>только первых десяти ходов в шахматах

10 и 3 - сравнил ... с пальцем. Задача: найти мат в три хода. Все дальнейшие ходы нас не интересуют. Если не удалось найти, значит ответ отрицательный.

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


 
TUser ©   (2004-10-21 10:54) [18]

Да при чем тут десять. Я думаю тружно представить себе позицию, где возможно более 500 ходов. Т.о. все равно не больше 10^8, а это реально перебором найти за разумное время.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1098727888
Irvin
2004-10-25 22:11
2004.11.07
Как узнать место расположения папки "Мои документы"


9-1088682716
Micke
2004-07-01 15:51
2004.11.07
2d аркада


14-1098089058
Undert
2004-10-18 12:44
2004.11.07
Проблема с MYSQL


14-1098112656
Никита
2004-10-18 19:17
2004.11.07
Опрос :-)


4-1096537587
kaZaNoVa
2004-09-30 13:46
2004.11.07
Хук, Dll и права System





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский