powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / структура данных для хранения записей шахматных партий
25 сообщений из 37, страница 1 из 2
структура данных для хранения записей шахматных партий
    #33800476
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
subj, собственно.
Вопрос чисто академический.
Незная нотаций записей ходов, на первый взгляд кажется, что задача сводится к записям координат двух точек - начало, конец хода - и фигуре, совершившей ход.
Наверняка уже кто-то где-то делал.
Может, есть ссылки?
по гуглу что-то не нашел. Видимо, плохо составил запрос.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33800570
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так нужна нотация или структура?
Если структура, то нужно знать налагаемые требования, какие запросы предполагается выполнять и т.д.
Может достаточно в строковом поле хранить всю партию в стандартной нотации?
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33800660
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
как я уже упомянул, задача чисто познавательная.
Как минимум - "навигация" по партии.
Что можно еще? Поиск партий по....
По какому критерию? Был бы я шахматист, то может бы и придумал...
По чему их искать можно?
И можно ли?
Но навигация от первого хода к послоеднему, от любого вперед и назад - это точно.
При решении задач - варианты, ну как там у них, "если я с этого хода пойду _так_ - такой вариант, а если _эдак_ - то совсем другой"
Если в одной из нотаций, вся партия в строке, и будет работать - то почему нет.

Все придумываю прям налету, из головы, так что sorry за сумбур.
Просто все это в рамках моих старых сомнений в "нужности" native XML в Viper.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33800663
sergey888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть доска, состоящая из клеток
по горизонтали цифры, по вертикали буквы.
каждая клетка состоит из координат на пример а1
есть пронумерованные ходы,
например
е1-е5
е7-е6

есть шах со знаком +
мат со знаком ++
сильный ход !
слабый ход ?
и т.д.
вот собственно и все.
можно посмотреть любую шахматную программу, там это все есть.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33800686
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а какова конечная цель всей этой затеи?

Вы уж придумайте "из головы" все до конца, а потом излагайте.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33800792
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggvНезная нотаций записей ходов, на первый взгляд кажется, что задача сводится к записям координат двух точек - начало, конец хода - и фигуре, совершившей ход.
Зная, что на одной клетке в один момент времени может стоять только одна фигура, можно понять, что эта структура несколько избыточна. Но есть одна тонкость, из-за которой она недостаточна.

Если пофантазировать на тему "универсальный формат записи партии, удобный для последующих произвольных запросов", я бы, наверное, использовал:

Код: plaintext
1.
2.
3.
4.
5.
номер хода - понятно
фигура - id фигуры на доске (все фигуры начальной расстановки нумеруются 1..32
координата конца движения - понятно
новая фигура - вид фигуры, в которую превращается пешка, достигшая 1/8 горизонтали
флаги комментариев - шах, мат, сильный-слабый ход
флаги специальных ходов - рокировка, взятие на проходе
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801105
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Код: plaintext
1.
2.
3.
4.
5.
номер хода - понятно
фигура - id фигуры на доске (все фигуры начальной расстановки нумеруются 1..32
координата конца движения - понятно
новая фигура - вид фигуры, в которую превращается пешка, достигшая 1/8 горизонтали
флаги комментариев - шах, мат, сильный-слабый ход
флаги специальных ходов - рокировка, взятие на проходе


А ссылка на съеденную фигуру??
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801112
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basА ссылка на съеденную фигуру??а зачем? ведь ее координаты совпадают с координатами "конца движения", разве нет?
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801128
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft basА ссылка на съеденную фигуру??а зачем? ведь ее координаты совпадают с координатами "конца движения", разве нет?

А если через эту точку проходило несколько фигур? Можно конечно это получить извращенным способом (координаты фигуры, у кот. наибольший номер хода, но меньше текущего). Да и еще как будем знать какие фигуры съедены, а какие еще на доске?
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801134
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basА если через эту точку проходило несколько фигур?за один ход?

basДа и еще как будем знать какие фигуры съедены, а какие еще на доске?в схеме, предложенной softwarer-ом - только проследив всю партию от начала до нужной точки.
Но автор противоположного требования не выдвигал. Он вообще почти никаких условий и требований не выдвигал...
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801260
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
Не выдвигал.
И не мог выдвинуть.
Сегодня услышал мнение, что для такого рода задач - на каждом шаге есть множество действий на выбор, в зависимости от сделанного действия на следующем шаге есть еще множество действий на выбор (шахматы просто общеизветсный пример) - так вот, для хранения данных, используемых такими задачами, иерархически организованное хранение данных более удобное/экономичное, чем реляционное.
Вот, собственно, я и задумался.

К вопросу о наличии фигур на доске - имхо подсчет их от начала партии до текущего не самый быстрый способ :)
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801276
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
basА ссылка на съеденную фигуру??
Согласен, пригодится.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801406
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будучи пользователем шахматных программ, я бы предложил:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
id хода (одинаковых номеров ходов может быть много, ведь надо хранить и варианты!)
признак основная партия или вариант
id предыдущего хода 
номер хода
поле начала хода
действие (ход или взятие)
поле конца хода
примечание
текущая позиция (тут могут быть варианты, как представить)

в таком случае легко показать любую позицию после любого хода, т.к. не придется ее вычислять
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801625
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stiпризнак основная партия или вариант
Это уже не запись партии. Хотя для записи анализа, конечно, нужно дерево вариантов.

stiтекущая позиция
Не нужно это хранить.

stiв таком случае легко показать любую позицию после любого хода, т.к. не придется ее вычислять
Вычислять ее в данном случае будет удобнее. Хранить стоит то, к чему будут идти запросы - но запросы к текущей позиции я.. не представляю.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801654
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
sti - интересное предложение.
Кое в чем напоминает иерархию.
Но на игровых серверах ведь как-то хранят?
Я сам Гошник (ладно, пытался им стать :), шас гляну, как в Го с этим дело
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801764
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot softwarerВычислять ее в данном случае будет удобнее. Хранить стоит то, к чему будут идти запросы - но запросы к текущей позиции я.. не представляю.[/quot]

Это я как пользователь говорю. Именно к текущей позиции и есть основные запросы. Т.е. я смотрю какой-то вариант, потом мне надо вернуться к исходной позиции или в середину варианта.

Помнится какая-то из ранних программ работала так: если я хотел перейти от одной позиции к другой, т.е. например начать просмотр с 20 хода (вполне реальная ситуация), то программа прокручивала все ходы на экране. Зла не хватало. ))
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33801934
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stiЭто я как пользователь говорю. Именно к текущей позиции и есть основные запросы. Т.е. я смотрю какой-то вариант, потом мне надо вернуться к исходной позиции или в середину варианта.
Хм. Видите ли, прокручивание вариантов - это функция целиком клиента. Процесс идет примерно так: Вы выбираете/загружаете партию, клиент считывает ее, и при этом, вполне возможно, строит позицию на каждый ход. БД тут совершенно не при чем, и хранить позиции в БД для этого - просто лишняя работа и лишняя возможность внести ошибку.

Чем это отличается от тех флагов, которые предлагал я: например, по этим флагам можно запустить запрос типа "в каком проценте партий рокировка выполнялась после 40-го хода".
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33802782
KGP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Если пофантазировать на тему "универсальный формат записи партии, удобный для последующих произвольных запросов", я бы, наверное, использовал:

Код: plaintext
1.
2.
3.
4.
5.
номер хода - понятно
фигура - id фигуры на доске (все фигуры начальной расстановки нумеруются 1..32
координата конца движения - понятно
новая фигура - вид фигуры, в которую превращается пешка, достигшая 1/8 горизонтали
флаги комментариев - шах, мат, сильный-слабый ход
флаги специальных ходов - рокировка, взятие на проходе


Как шахматист важным сочту:
1. время, когда был сделан ход
2. таблицу [Фигура] - белый/черный лагерь. [Тип фигуры] варианты ходов (алгоритм/правило как она может ходить)
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33802936
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KGP1. время, когда был сделан ход
И откуда Вы собираетесь брать эту информацию? В официальных записях она вроде бы отсутствует, а дополнительный хронометраж упомянут не был.

KGP2. таблицу [Фигура] - белый/черный лагерь. [Тип фигуры] варианты ходов (алгоритм/правило как она может ходить)
Ээ.... как шахматист, Вы хотели бы увидеть в БД сыгранных партий правила перемещения фигур?
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803011
Фотография Visitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ официальных записях она вроде бы отсутствует, а дополнительный хронометраж упомянут не был.

если я чего-то не натупал - в блицах то уж точно учитывается время...

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

Многие шахматные программы позволяют обмениваться записями партий и разыгрывать их "офлайн" - насколько я помню это открытая информация - нужно просто найти и использовать...
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803052
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
visitor - всего лишь попытка понять, почему иерархическая модель данных более проста/удобна для таких задач.
Или почему реляционная модель более сложна/неудобна.
Задача моделирования - "что если я сделаю ход вот так, а он ответит вот этак, мы тогда так вот, СТОП! Неправильно! Два шага назад, и попробуем другим путем"
Так вот, все эти мыслительные терзания надо сохранять для последующего анализа.
Действительно иерархия лучше?
Пока не видно особых подводных камней и сложностей при реализации в реляционной модели.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803058
ggv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ggv
Гость
шахматы здесь - всего лишь обшеизвестный пример такого рода задач
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803183
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visitorесли я чего-то не натупал - в блицах то уж точно учитывается время...
Хм. Вообще-то в блицах даже не ведется записи ходов :)

Visitor- что-то мне помнится там 2-а основных варианта протокола, которые приняты во всем мире.
Есть. Но они неудобны для последующей машинной обработки, а сокращенный - так еще и для хранения.

VisitorМногие шахматные программы позволяют обмениваться записями партий
Я не зря упомянул в своем первоначальном сообщении постановку задачи - удобные последующие запросы.

Если вести речь только и исключительно о записи партии, то необходимо и достаточно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table Ходы_Партий (
  ИД_Партии integer not null references Партии (ИД_Партии),
  Номер_Полухода integer not null,
  Вертикаль_С char( 1 ) check (Вертикаль_С between 'a' and 'h'),
  Горизонталь_С char( 1 ) check (Горизонталь_С between '1' and '8'),
  Вертикаль_На char( 1 ) check (Вертикаль_На between 'a' and 'h'),
  Горизонталь_На char( 1 ) check (Горизонталь_На between '1' and '8'),
  constraint Ходы_Партий_ПК primary key ( ИД_Партии, Номер_Полухода )) ;
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803191
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggvПока не видно особых подводных камней и сложностей при реализации в реляционной модели.
Ну в общем-то в реализации иерархии в реляционной модели действительно нет особенных проблем. Если брать такую "современную классику" иерархии как XML, то в нем подобная запись будет куда менее удобна для обработки.
...
Рейтинг: 0 / 0
структура данных для хранения записей шахматных партий
    #33803367
Фотография Visitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Visitorесли я чего-то не натупал - в блицах то уж точно учитывается время...
Хм. Вообще-то в блицах даже не ведется записи ходов :)

упс...
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / структура данных для хранения записей шахматных партий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]