|
|
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
subj, собственно. Вопрос чисто академический. Незная нотаций записей ходов, на первый взгляд кажется, что задача сводится к записям координат двух точек - начало, конец хода - и фигуре, совершившей ход. Наверняка уже кто-то где-то делал. Может, есть ссылки? по гуглу что-то не нашел. Видимо, плохо составил запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 16:53 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
Так нужна нотация или структура? Если структура, то нужно знать налагаемые требования, какие запросы предполагается выполнять и т.д. Может достаточно в строковом поле хранить всю партию в стандартной нотации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 17:10 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
как я уже упомянул, задача чисто познавательная. Как минимум - "навигация" по партии. Что можно еще? Поиск партий по.... По какому критерию? Был бы я шахматист, то может бы и придумал... По чему их искать можно? И можно ли? Но навигация от первого хода к послоеднему, от любого вперед и назад - это точно. При решении задач - варианты, ну как там у них, "если я с этого хода пойду _так_ - такой вариант, а если _эдак_ - то совсем другой" Если в одной из нотаций, вся партия в строке, и будет работать - то почему нет. Все придумываю прям налету, из головы, так что sorry за сумбур. Просто все это в рамках моих старых сомнений в "нужности" native XML в Viper. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 17:27 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
есть доска, состоящая из клеток по горизонтали цифры, по вертикали буквы. каждая клетка состоит из координат на пример а1 есть пронумерованные ходы, например е1-е5 е7-е6 есть шах со знаком + мат со знаком ++ сильный ход ! слабый ход ? и т.д. вот собственно и все. можно посмотреть любую шахматную программу, там это все есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 17:27 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
а какова конечная цель всей этой затеи? Вы уж придумайте "из головы" все до конца, а потом излагайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 17:31 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
ggvНезная нотаций записей ходов, на первый взгляд кажется, что задача сводится к записям координат двух точек - начало, конец хода - и фигуре, совершившей ход. Зная, что на одной клетке в один момент времени может стоять только одна фигура, можно понять, что эта структура несколько избыточна. Но есть одна тонкость, из-за которой она недостаточна. Если пофантазировать на тему "универсальный формат записи партии, удобный для последующих произвольных запросов", я бы, наверное, использовал: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 18:08 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
softwarer Код: plaintext 1. 2. 3. 4. 5. А ссылка на съеденную фигуру?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 20:12 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
basА ссылка на съеденную фигуру??а зачем? ведь ее координаты совпадают с координатами "конца движения", разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 20:18 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
miksoft basА ссылка на съеденную фигуру??а зачем? ведь ее координаты совпадают с координатами "конца движения", разве нет? А если через эту точку проходило несколько фигур? Можно конечно это получить извращенным способом (координаты фигуры, у кот. наибольший номер хода, но меньше текущего). Да и еще как будем знать какие фигуры съедены, а какие еще на доске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 20:27 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
basА если через эту точку проходило несколько фигур?за один ход? basДа и еще как будем знать какие фигуры съедены, а какие еще на доске?в схеме, предложенной softwarer-ом - только проследив всю партию от начала до нужной точки. Но автор противоположного требования не выдвигал. Он вообще почти никаких условий и требований не выдвигал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 20:32 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
Не выдвигал. И не мог выдвинуть. Сегодня услышал мнение, что для такого рода задач - на каждом шаге есть множество действий на выбор, в зависимости от сделанного действия на следующем шаге есть еще множество действий на выбор (шахматы просто общеизветсный пример) - так вот, для хранения данных, используемых такими задачами, иерархически организованное хранение данных более удобное/экономичное, чем реляционное. Вот, собственно, я и задумался. К вопросу о наличии фигур на доске - имхо подсчет их от начала партии до текущего не самый быстрый способ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 23:03 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
basА ссылка на съеденную фигуру?? Согласен, пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2006, 23:20 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
будучи пользователем шахматных программ, я бы предложил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. в таком случае легко показать любую позицию после любого хода, т.к. не придется ее вычислять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 06:07 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
stiпризнак основная партия или вариант Это уже не запись партии. Хотя для записи анализа, конечно, нужно дерево вариантов. stiтекущая позиция Не нужно это хранить. stiв таком случае легко показать любую позицию после любого хода, т.к. не придется ее вычислять Вычислять ее в данном случае будет удобнее. Хранить стоит то, к чему будут идти запросы - но запросы к текущей позиции я.. не представляю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 09:52 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
sti - интересное предложение. Кое в чем напоминает иерархию. Но на игровых серверах ведь как-то хранят? Я сам Гошник (ладно, пытался им стать :), шас гляну, как в Го с этим дело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 10:02 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
[quot softwarerВычислять ее в данном случае будет удобнее. Хранить стоит то, к чему будут идти запросы - но запросы к текущей позиции я.. не представляю.[/quot] Это я как пользователь говорю. Именно к текущей позиции и есть основные запросы. Т.е. я смотрю какой-то вариант, потом мне надо вернуться к исходной позиции или в середину варианта. Помнится какая-то из ранних программ работала так: если я хотел перейти от одной позиции к другой, т.е. например начать просмотр с 20 хода (вполне реальная ситуация), то программа прокручивала все ходы на экране. Зла не хватало. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 10:37 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
stiЭто я как пользователь говорю. Именно к текущей позиции и есть основные запросы. Т.е. я смотрю какой-то вариант, потом мне надо вернуться к исходной позиции или в середину варианта. Хм. Видите ли, прокручивание вариантов - это функция целиком клиента. Процесс идет примерно так: Вы выбираете/загружаете партию, клиент считывает ее, и при этом, вполне возможно, строит позицию на каждый ход. БД тут совершенно не при чем, и хранить позиции в БД для этого - просто лишняя работа и лишняя возможность внести ошибку. Чем это отличается от тех флагов, которые предлагал я: например, по этим флагам можно запустить запрос типа "в каком проценте партий рокировка выполнялась после 40-го хода". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 11:21 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
softwarer Если пофантазировать на тему "универсальный формат записи партии, удобный для последующих произвольных запросов", я бы, наверное, использовал: Код: plaintext 1. 2. 3. 4. 5. Как шахматист важным сочту: 1. время, когда был сделан ход 2. таблицу [Фигура] - белый/черный лагерь. [Тип фигуры] варианты ходов (алгоритм/правило как она может ходить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 14:49 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
KGP1. время, когда был сделан ход И откуда Вы собираетесь брать эту информацию? В официальных записях она вроде бы отсутствует, а дополнительный хронометраж упомянут не был. KGP2. таблицу [Фигура] - белый/черный лагерь. [Тип фигуры] варианты ходов (алгоритм/правило как она может ходить) Ээ.... как шахматист, Вы хотели бы увидеть в БД сыгранных партий правила перемещения фигур? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 15:16 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
softwarerВ официальных записях она вроде бы отсутствует, а дополнительный хронометраж упомянут не был. если я чего-то не натупал - в блицах то уж точно учитывается время... лет сто назад решал такую задачу тоже из академического интереса - и не могу понять, как такой вопрос вообще мог возникнуть. Есть же стандарные нотации и правила записи партий для шахматных программ, есть соглашения и единые подходы - что-то мне помнится там 2-а основных варианта протокола, которые приняты во всем мире. Многие шахматные программы позволяют обмениваться записями партий и разыгрывать их "офлайн" - насколько я помню это открытая информация - нужно просто найти и использовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 15:32 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
visitor - всего лишь попытка понять, почему иерархическая модель данных более проста/удобна для таких задач. Или почему реляционная модель более сложна/неудобна. Задача моделирования - "что если я сделаю ход вот так, а он ответит вот этак, мы тогда так вот, СТОП! Неправильно! Два шага назад, и попробуем другим путем" Так вот, все эти мыслительные терзания надо сохранять для последующего анализа. Действительно иерархия лучше? Пока не видно особых подводных камней и сложностей при реализации в реляционной модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 15:39 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
шахматы здесь - всего лишь обшеизвестный пример такого рода задач ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 15:40 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
Visitorесли я чего-то не натупал - в блицах то уж точно учитывается время... Хм. Вообще-то в блицах даже не ведется записи ходов :) Visitor- что-то мне помнится там 2-а основных варианта протокола, которые приняты во всем мире. Есть. Но они неудобны для последующей машинной обработки, а сокращенный - так еще и для хранения. VisitorМногие шахматные программы позволяют обмениваться записями партий Я не зря упомянул в своем первоначальном сообщении постановку задачи - удобные последующие запросы. Если вести речь только и исключительно о записи партии, то необходимо и достаточно: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 16:13 |
|
||
|
структура данных для хранения записей шахматных партий
|
|||
|---|---|---|---|
|
#18+
ggvПока не видно особых подводных камней и сложностей при реализации в реляционной модели. Ну в общем-то в реализации иерархии в реляционной модели действительно нет особенных проблем. Если брать такую "современную классику" иерархии как XML, то в нем подобная запись будет куда менее удобна для обработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2006, 16:16 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33801260&tid=1545187]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
410ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 703ms |

| 0 / 0 |
