У меня есть идея, написать свой шахматный движок. С целью попрактиковаться в программирование да и в шахматах тоже. Мож еще ктото тож хочет. Я имею работу не над одним проектом, а за разными, с целью посмотреть чья программа сильнее. Но конечно это не сейчас, после сессии естественно.
А что Вы реально новое хотите написать? по поводу шахматных программ (и теории их написания) издано немало книг и работ, но все эти подходы не играют в шахматы а оценивают позиции на доске и выбирают тот ход, который приведет к более выгодным позициям. В Deep Blue главным достоинством был паралельный процессор, не помню уж, сколько в нем было узлов, Если трудится в данном направлении, то надо усовершенствовать игровую логику, добавить нетрадиционные и эксперементальные хода, изредка предпринимаемые машиной с целью "эксперементировать", heuristic оценку ситуации (у меня этот предмет преподается на английском), возможность не просто предсказывать ход оппонента, но и мотивы этого хода.
хм..) вот если решать задачи связанные с шахматами.... Задание :))
"Шахматная ассоциация решила оснастить всех своих сотрудников такими телефонными номерами, которые бы набирались на кнопочном телефоне ходом коня. Например, ходом коня набирается телефон 340-49-27. При этом телефонный номер не может начинаться ни с цифры 0, ни из цифры 8. ------------- | 1 | 2 | 3 | ------------- | 4 | 5 | 6 | ------------- | 7 | 8 | 9 | ------------- |__| 0 |__ | Нужно написать программу, которая определяет количество телефонных номеров длины N, которые набираются ходом коня. 1<N<100 Исходный файл должен содержать одно число - искомое количество телефонных номеров"
Или хотя бы напишите - при какой длине, сколько номеров)))))))))))))))))
ИМХО #2 #3 посты -- оффтоп. Валерий, человек хочет написать не обязательно новый, а свой движок. Татьяна, это обычная задача олимпиадного программирования. Влад, у меня есть полностью оригинальный движок (примерно 50 часов разработки без опоры на сторонние идеи). Если хотите играть -- пишите в личку.
Впрочем, подозреваю, что движок, разработанный одним человеком, с реализованным по книжке, сравнивать будет не очень интересно, так что уточните пожалуйста, что имеете в виду, чтобы не было такой ситуации.
Ну в Паскале это может быть примерно так:))) uses crt;
var n,i:integer; z,x,y,v,u,x1,y1,v1,u1:extended; BEGIN write('Enter kolichestvo tsifr n = '); readln(n); x:=4;y:=0;u:=1;v:=2; if n>2 then for i:=n downto 3 do begin x1:=x;y1:=y;u1:=u;v1:=v; x:=2*(u1+v1);y:=v1; u:=x1;v:=x1+2*y1; end; writeln('nomerov : ',2*(x+y+u)+3*v:3:0); readln; END.
Длина | Количество ----------------------------------------- 3 | 36 ----------------------------------------- 8 | 2240 ----------------------------------------- 35 | 11456191266816 ----------------------------------------- 80 | 1715550913604185820(12)
Могу рассказать задачу о гиперферзе. Гиперферзь стоит на известном поле N-мерной (2<N<30000) доски в виде паралеллипидеда известных размеров. Требуется подсчитать количество возможных ходов гиперферзя. Примечание: гиперферзь ходит так, что смещение по оси x_i равно a_i*k, где a_i равно одному из трех значений: -1,0,+1; а k общее для всех осей.
У меня был опыт написания шахматной программы. Единственное реальное, чего удалось добиться - более-менее корректное воспроизведение партии из файлов в формате .pgn Заинтересованные товарищи можете почитать этот форум immortal223.borda.ru и/или написать мне в личку.
Ну вот значит скоро сможем сыграть:))) Надо бы еще правила довести до полных. Как-то до таких высот программирования, чтобы запросто добавить правило 50 ходов или тройного повтора, сохранив при этом скорость работы, я не дорос.. :(
Как бы там ни было - успехов!
вот если решать задачи связанные с шахматами....
Задание :))
"Шахматная ассоциация решила оснастить всех своих сотрудников такими телефонными номерами, которые бы набирались на кнопочном телефоне ходом коня. Например, ходом коня набирается телефон 340-49-27. При этом телефонный номер не может начинаться ни с цифры 0, ни из цифры 8.
-------------
| 1 | 2 | 3 |
-------------
| 4 | 5 | 6 |
-------------
| 7 | 8 | 9 |
-------------
|__| 0 |__ |
Нужно написать программу, которая определяет количество телефонных номеров длины N, которые набираются ходом коня.
1<N<100
Исходный файл должен содержать одно число - искомое количество телефонных номеров"
Или хотя бы напишите - при какой длине, сколько номеров)))))))))))))))))
Валерий, человек хочет написать не обязательно новый, а свой движок.
Татьяна, это обычная задача олимпиадного программирования.
Влад, у меня есть полностью оригинальный движок (примерно 50 часов разработки без опоры на сторонние идеи). Если хотите играть -- пишите в личку.
Впрочем, подозреваю, что движок, разработанный одним человеком, с реализованным по книжке, сравнивать будет не очень интересно, так что уточните пожалуйста, что имеете в виду, чтобы не было такой ситуации.
Правильно)
:))
16, 36, 82, 188, 428, 984, 2240, 5152, 11728, 26976, 61408, 141248, 321536, 739584, 1683584, 3872512, 8815360, 20276736, 46157824, 106170368, 241685504, 555915264, 1265481728, 2910810112, 6626148352, 15241199616, 34694963200, 79803957248, 181665185792, 417858945024, 951211261952, 2187937841152, 4980606828544, 11456191266816, 26078795923456, 59985396236288, 136550348226560, 314087612350464, 714986905665536, 1644584089157632, 3743720041086976, 8611154085543936, 19602372623859712, 45088588156633088, 102639355578810368, 236086912597622784, 537426642977423360, 1236167122959204352,
uses crt;
var n,i:integer;
z,x,y,v,u,x1,y1,v1,u1:extended;
BEGIN
write('Enter kolichestvo tsifr n = ');
readln(n);
x:=4;y:=0;u:=1;v:=2;
if n>2 then
for i:=n downto 3 do
begin
x1:=x;y1:=y;u1:=u;v1:=v;
x:=2*(u1+v1);y:=v1;
u:=x1;v:=x1+2*y1;
end;
writeln('nomerov : ',2*(x+y+u)+3*v:3:0);
readln;
END.
Длина | Количество
-----------------------------------------
3 | 36
-----------------------------------------
8 | 2240
-----------------------------------------
35 | 11456191266816
-----------------------------------------
80 | 1715550913604185820(12)
Дмитрий Анисимов пять баллов :)))))
Заинтересованные товарищи можете почитать этот форум immortal223.borda.ru и/или написать мне в личку.
Надо бы еще правила довести до полных. Как-то до таких высот программирования, чтобы запросто добавить правило 50 ходов или тройного повтора, сохранив при этом скорость работы, я не дорос.. :(