|
|
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые старожилы! Нужда несказанная заставила обратиться к вам за помощью:(( Задача такая: есть телефонные коды городов, описанные диапазонами целых чисел. a - начало диапазона, b - конец диапазона условия: b - a = [0 to 1 000 000]; len(a) = len(b) = [1 to 1 000 000 000 000] (любое очень большое число, не поддающееся CLng). Нужно определить все числа диапазона таким образом, чтобы если в диапазоне есть число (числа), которое(ые) порядком(ами) меньше чисел из диапазона, но полностью описывает(ют) их слева, то вместо такого поддиапазона проставляется это число (например, 5555 описывает диапазон 55550000-55559999, т.к. любое количество любых цифр, следующих за 5555 подпадает в указанный диапазон. Следует учитывать, что количество цифр, следующих за младшим(родительским) порядком не имеет значения, т.к. указанные числа в данной задаче являются телефонными кодами дозвона). Пример: диапазон 55550001-55559999 описывается так: 55550001 55550002 55550003 55550004 55550005 55550006 55550007 55550008 55550009 55551 55552 55553 55554 55555 55556 55557 55558 55559 А диапазон 55550000-55550000 описывается как 55550000. Буду очень благодарен как за код для этой задачи, так и за любые идеи по ее решению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 18:14:27 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Забыл важное: бд в Access, язык - VBA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 18:42:26 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Почему бы Вам не задать этот вопрос в форуме по Аксессу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 23:06:46 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
И кстати: какова роль БД? Числа сидят в ней или как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2005, 23:08:42 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Числа импортируются в БД. кстати, первые несколько цифр начала и конца диапазона совпадают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 18:43:35 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Вопрос больше относится к программированию, чем к СУБД, как мне кажется. В принципе же числа могут и не импортироваться в БД, а быть в текстовом или любом ином документе, так что это вопрос по VBA, как мне кажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 18:47:32 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
newteapot есть телефонные коды городов, описанные диапазонами целых чисел. Нужно определить все числа диапазона таким образом, чтобы если в диапазоне есть число (числа), которое(ые) порядком(ами) меньше чисел из диапазона, но полностью описывает(ют) их слева, то вместо такого поддиапазона проставляется это число (например, 5555 описывает диапазон 55550000-55559999, т.к. любое количество любых цифр, следующих за 5555 подпадает в указанный диапазон. Следует учитывать, что количество цифр, следующих за младшим(родительским) порядком не имеет значения, т.к. указанные числа в данной задаче являются телефонными кодами дозвона). ...любые идеи по ее решению. 1. Выделить термы, содержащие телефоны (с кодами дозвона). 2. К термам применить оператор VB (VBA) Like: result = string Like pattern Например, строка s = "55551234-w-234" (№ телефона-пауза-№ внутр.тел): Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 14:17:58 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
newteapotПример: диапазон 55550001-55559999 описывается так: 55550001 55550002 55550003 55550004 55550005 55550006 55550007 55550008 55550009 55551 55552 55553 55554 55555 55556 55557 55558 55559 Мне кажется, что тут ошибка. Номера от 55550010 до 55550999 остались за бортом. Дело в том, что я почти написал программу и долго не мог добиться, чтобы она выдавала такой ответ, как тут. И вот оказалось, что здесь ответ неправильный. Короче, я еще чуть-чуть поотлаживаю и выложу сюда. Если баги остались, пусть кто-нибудь их добьет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 17:55:24 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
В общем, вот оно. Вроде работает (тьфу-тьфу): Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 18:01:15 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Если у кого-то возник вопрос, зачем у этой процедуры третий параметр, то вот вариант без него: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 18:46:30 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Еще небольшая оптимизация. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 22:14:38 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
четал, четал... - ничего не не вычетал. так и не понял в чем в точности дело. ну, например, почему 55550004- это "правильный" номер, а номера 55551234 не должно получаться в потоке вывода? а вот такие вызовы Код: plaintext 1. 2. и, если допустимы - что на выходе каждого из них должно получиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 22:45:29 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Насчет правильного и неправильного - думаю, что это ошибка. Насчет X "555501", "55559999" - у меня пока не обрабатывается, но вот поправка, чтобы обрабатывалось. Вместо первого ифа с экзитом надо поставить два таких: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Насчет X "55550000", "55559999" - да, и ответ будет 5555. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 22:56:23 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Код: plaintext задачу я не понял совсем. она тайная или не может в иных предложениях быть сформулирована? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2005, 23:10:05 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Спасибо большое всем! Отдельное большущее спасибо Владимиру Санычу за код!!! Я подошел к задаче совершенно с иной стороны, а очевидного, как оказалось, и не заметил. Задачу я решил при помощи StrReverse(Val(StrReverse(...))), но мое решение длиннее, код Владимира Саныча лаконичнее и, главное, быстрее. Диапазон 55550010 - 55550999 я действительно пропустил, прошу прощения... Спасибо еще раз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2005, 11:44:09 |
|
||
|
Оптимизация диапазона чисел
|
|||
|---|---|---|---|
|
#18+
Victoshaзадачу я не понял совсем. она тайная или не может в иных предложениях быть сформулирована? Мне почему-то удалось понять... Список телефонных номеров может быть задан двумя способами: либо как от номера до номера, либо как список начал номеров (например, интервал от 110 до 119 записывается как 11). Задача состояла в том, чтобы перевести список, заданный первым способм, во второй способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 00:25:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33302057&tid=2167083]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
87ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 186ms |
| total: | 334ms |

| 0 / 0 |
