|
|
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, такая проблема, для краткости отображения нужно заданный ряд номеров отобразить в виде диапазона примерно так Код: plaintext 1. 2. 3. 4. кто подскажет куда копать, может есть готовые библиотеки, или регулярное выражение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:13 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
В циклы копать. При чем написать алгоритм быстрее, чем написать на форум и ждать ответа хотя-бы минут 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:16 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
wadman написать алгоритм быстрее, чем написать на форум и ждать ответа хотя-бы минут 5. Не уверен, задача довольно нетривиальная, осложняется тем, что номера могут быть такие: VST45 - VST123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:50 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Goffman , задача - тривиальная. Goffmanосложняется тем, что номера могут быть такие: VST45 - VST123 Это не осложнение, а неумение чётко и однозначно поставить задачу. Формализуйте номер - и всё сведётся к задаче исходного поста. Что же до реализации - всё зависит от того, какими средствами нужно это реализвывать. Если предположить (форум, всё-таки, SQL.RU), что средствами SQL - следует отказаться от свёртки диапазонов в пользу нормализации данных. Либо иметь ОЧЕНЬ веские основания для реализации этой свёртки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 12:57 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Akina, Однозначно поставить задачу не получается, номера могут быть хоть какими, какого то четкого правила нумерации номеров нет (извиняюсь за тавтологию:). Да, хранятся они в таблице, каждый номер в своей записи, но это этого не легче. Так как мы не знаем правила нумерации, и не можем на них повлиять, то и задача рассматривается в общем виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 13:38 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
GoffmanAkina, Однозначно поставить задачу не получается, номера могут быть хоть какими, какого то четкого правила нумерации номеров нет (извиняюсь за тавтологию:). Да, хранятся они в таблице, каждый номер в своей записи, но это этого не легче. Так как мы не знаем правила нумерации, и не можем на них повлиять, то и задача рассматривается в общем виде. сначала определитесь, а потом спрашивайте... А то щас обсуждать начнём, а окажется, что у вас номер может записываться иероглифом или римскими числами, а ещё потом в двоичной системе в перемешку с буквами... ))) Минимум: приведите реальный список, который будет, и то, что из такого списка получить надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 13:43 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Goffman, Такая последовательность возможна? Код: plaintext Такая последовательность возможна? Код: plaintext Такая последовательность возможна? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 14:01 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
AkinaЕсли предположить (форум, всё-таки, SQL.RU), что средствами SQL - следует отказаться от свёртки диапазонов в пользу нормализации данных. Сегодня уже не составляет проблемы свернуть диапазон средствами SQL. По крайней мере, нормального SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 14:05 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
softwarerСегодня уже не составляет проблемы свернуть диапазон средствами SQL. По крайней мере, нормального SQL.Свернуть - да. Использовать, особенно если быстродействие критично - далеко не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 14:34 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Програмёр сначала определитесь, а потом спрашивайте... А то щас обсуждать начнём, а окажется, что у вас номер может записываться иероглифом или римскими числами, а ещё потом в двоичной системе в перемешку с буквами... ))) Минимум: приведите реальный список, который будет, и то, что из такого списка получить надо Теоретически могут быть и римские, правила нумерации от заказчика зависят )) Сейчас списки примерно такие VM3529,VM3530,VM3531,VM3532,VM3533,VM3534,VM3493,VM3494,VM3495,VM3496,VM3497,VM3498 Свертка должна быть получиться такая VM3529 - VM3534, VM3493 - VM3498 Бывают более сложные варианты, например т.н. шахматка A1Б1, А1Б2, A2Б1, А2Б2, А3Б1, А3Б2 получается А1Б1 - А3Б2 Но для начала, чтобы не усложнять, берем что есть буквенный префикс и цифровая часть. В принципе, если хорошенько подумать, то первая задача вполне решаемая :) Я думал есть уже готовые велосипеды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 14:46 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
GoffmanПрограмёр сначала определитесь, а потом спрашивайте... А то щас обсуждать начнём, а окажется, что у вас номер может записываться иероглифом или римскими числами, а ещё потом в двоичной системе в перемешку с буквами... ))) Минимум: приведите реальный список, который будет, и то, что из такого списка получить надо Теоретически могут быть и римские, правила нумерации от заказчика зависят )) Сейчас списки примерно такие VM3529,VM3530,VM3531,VM3532,VM3533,VM3534,VM3493,VM3494,VM3495,VM3496,VM3497,VM3498 Свертка должна быть получиться такая VM3529 - VM3534, VM3493 - VM3498 Бывают более сложные варианты, например т.н. шахматка A1Б1, А1Б2, A2Б1, А2Б2, А3Б1, А3Б2 получается А1Б1 - А3Б2 Но для начала, чтобы не усложнять, берем что есть буквенный префикс и цифровая часть. В принципе, если хорошенько подумать, то первая задача вполне решаемая :) Я думал есть уже готовые велосипеды Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:00 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
dzone, как сложно-то. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:20 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
softwarer, )) согласен, можно и по красивее написать, будет кода поменьше. хотя у вас результат не в одну строчку и не через запятую :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:37 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
dzoneхотя у вас результат не в одну строчку и не через запятую :( Ну ещё одна строка кода - и результат будет испорчен таким образом, только вот зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 15:46 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
Goffmanкто подскажет куда копать Они ж у Вас осортированы ! Берите первый и последний элементы. Между ними ставьте черточку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 18:58 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
softwarerdzone, как сложно-то. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Ваш метод конечно красивее, вот написал ее на шарпе Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 22:02 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
GoffmanБывают более сложные варианты, например т.н. шахматка A1Б1, А1Б2, A2Б1, А2Б2, А3Б1, А3Б2 получается А1Б1 - А3Б2 Эту задачу можно решить только при помощи графов (деревьев) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2012, 22:12 |
|
||
|
заменить последовательность диапазоном
|
|||
|---|---|---|---|
|
#18+
ВСЕМ СПАСИБО ЗА ПОМОЩЬ, особенно Softwarer'у для универсальности, немного модернизировал запрос, вот что получилось Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2012, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38024100&tid=1342060]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 494ms |

| 0 / 0 |
