|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
/*Описание*/ Есть WinForms приложение + MDB файл со словарем (поля: id, word) Есть шаблон кроссворда загруженный в грид. В каждой белой ячейке находится номер слова (если слова пересекаются - то два номера). Для наглядности сделал скрин и проставил в паинте номера в началах каждого слова. Если в номере пристутствует "h" - значит слово идет по горизонтали, если "v" - по вертикали: ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 00:53 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
Есть List<my_obj> равный количеству слов в кроссворде (22 шт) следующего вида: Номер слова в спискеКод словаДлинаОграничения01h41h[1]=2v[0];1h[3]=3v[0];12v52v[0]=1h[1];2v[2]=7h[1];2v[4]=11h[1];23v53v[0]=1h[3];3v[2]=7h[3];3v[3]=9h[0];3v[4]=11h[3];............2120h520h[1]=13v[4];20h[3]=14v[4]; Теоретически, по этому списку можно построить что-то вроде графа взаимосвязей между словами. На картинке - вручную построеный упрощенный граф (без указания зависимости по буквам пересекающихся слов): ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 00:53 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
/*Теперь вопрос*/ Можно ли, зная взаимосвязи между словами, сформировать сразу единый SQL запрос и вытянуть все необходимые слова? /*Примечания*/ MDB-файл был выбран как простое локальное хранилище словаря. В случае, если построение SQL запроса упрется в ограничения синтаксиса SQL'я Акцесса - то теоретически можно перейти на другое хранилище. Да, я знаю слово "рекурсия", но интересует возможность именно такого варианта заполнения сетки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 00:54 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1, нехер с запросом страдать, хранилищем может быть простой текстовый файл ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 01:00 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
авторнехер с запросом страдать, хранилищем может быть простой текстовый файл благодарю, Кэп! Проходи мимо с такими советами. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 14:42 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1благодарю, Кэп! Проходи мимо с такими советами. страдай дальше, удачи в безнадёжном мероприятии! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:05 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1Можно ли, зная взаимосвязи между словами, сформировать сразу единый SQL запрос и вытянуть все необходимые слова? Что значит "необходимые" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:27 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
Cat2BRS_1Можно ли, зная взаимосвязи между словами, сформировать сразу единый SQL запрос и вытянуть все необходимые слова? Что значит "необходимые" ?+1 Слов в кроссворде 22, слов в таблице 22, они необходимы все. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:56 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1Можно ли, зная взаимосвязи между словами, сформировать сразу единый SQL запрос и вытянуть все необходимые слова? Можно, в MS SQL тоже есть рекурсия :-) Но я бы не взялся. Увы, самым простым, быстрым и очевидным для меня является решение в лоб на C# (или другом ЯП). На Sql, боюсь, читабельность такого запроса, как и его скорость, будут катастрофическими. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:59 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1, Я бы поступил так. 1) Надо сохранить граф в БД а) каждое слово (длина, ориентация), б) пересечения между словами (номер буквы первого и второго) 2) А дальше погнали перебор а) берём слова, для которого меньше всего кандидатов на подстановку, б) рекурсивно все пересечения с ним в) нет кандидатов -- тупик г) есть кандидаты -- дальше рекурсивный перебор по кандидатам Учтите у MS SQL есть ограничение на рекурсию 32 раза что ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 18:46 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
a_voroninУчтите у MS SQL есть ограничение на рекурсию 32 раза что ли. это неправда (просто умолчание) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 19:27 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
AntonariyCat2пропущено... Что значит "необходимые" ?+1 Слов в кроссворде 22, слов в таблице 22, они необходимы все. Неправильная формулировка. Более точная формулировка - "и вытянуть все удовлетворяющие запросу". Вытянет запрос все 22 слова удовлетворяющие ограничениям - отлично! Но и если больше половины вытянет - тоже неплохо. Arm79BRS_1Можно ли, зная взаимосвязи между словами, сформировать сразу единый SQL запрос и вытянуть все необходимые слова? Можно, в MS SQL тоже есть рекурсия :-) Но я бы не взялся. . Мне не нужна рекурсия в SQL. Интересует можно ли построить такой SQL-запрос (да, пусть он будет очень сложный) который без рекурсии вытянет слова, удовлетворяющие условию пересечения с остальными словами? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 20:32 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1Интересует можно ли построить такой SQL-запрос (да, пусть он будет очень сложный) который без рекурсии вытянет слова, удовлетворяющие условию пересечения с остальными словами? Задачка нетривиальная, тянет на небольшую курсовую ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 23:30 |
|
Заполнение сетки кроссворда словами при помощи SQL-запроса. Возможно ли?
|
|||
---|---|---|---|
#18+
BRS_1Antonariyпропущено... +1 Слов в кроссворде 22, слов в таблице 22, они необходимы все. Неправильная формулировка. Более точная формулировка - "и вытянуть все удовлетворяющие запросу". Вытянет запрос все 22 слова удовлетворяющие ограничениям - отлично! Но и если больше половины вытянет - тоже неплохо. Arm79пропущено... Можно, в MS SQL тоже есть рекурсия :-) Но я бы не взялся. . Мне не нужна рекурсия в SQL. Интересует можно ли построить такой SQL-запрос (да, пусть он будет очень сложный) который без рекурсии вытянет слова, удовлетворяющие условию пересечения с остальными словами? вы же знаете, что любая рекурсивная функция может быть развернута в не рекурсивную функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2015, 20:42 |
|
|
start [/forum/topic.php?fid=20&msg=38845971&tid=1402056]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 158ms |
0 / 0 |