|
|
|
Задачка про кубики или параллелепипеды :-) FPD
|
|||
|---|---|---|---|
|
#18+
Есть задачка: задан Куб или ПП со сторонами A,B,C, где a1<=A<=a2, b1<=B<=b2, c1<=C<=c2. Если a2=0 OR a2=a1, то a1=A. Аналогично для B, C. Все возможные значения занесены в таблицу с полями a1,a2,b1,b2,c1,c2. Вопрос как найти наиболее подходящий размер кубика по заданным сторонам X, Y, Z? Если X не попадает в интервал [a1,a2], то выбрать ближайший больший интервал. Аналогично для Y, Z. Ранжировка в порядке X, Y, Z. Такая задачка была решена с использованием фильтров (для каждого размера фильтр сужал область поиска), но мне кажется это не лучшее решение (и достаточно долгое). Может есть предложения? Интересны также решения многомерных случаев, где размерность >=3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 13:09 |
|
||
|
Задачка про кубики или параллелепипеды :-) FPD
|
|||
|---|---|---|---|
|
#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. при таких условиях подойдет запись с ID = 2, НО добавим ещё одну запись с ID = 4 и попадающую в диапазон переменной z Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. таким образом получим - по x = 500 - max(a2) - по y = 5 - записи с ID = 1,2,4 - по z = 5 - записи с ID = 1,4 И какое соответствие спрашивается надо выбирать? - те нет однозначного решения, а есть набор решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2005, 14:55 |
|
||
|
Задачка про кубики или параллелепипеды :-) FPD
|
|||
|---|---|---|---|
|
#18+
PaulWistЧто-то в условии задачи недоговорено. И какое соответствие спрашивается надо выбирать? - те нет однозначного решения, а есть набор решений. В задаче не договорено о том, что если заданное значение x, y или Z превышает те, что есть в таблице, то нужно брать максимальное из меньших. В рассмотренном выше случае x=500 id=2 запись одна, значит это и есть решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 10:24 |
|
||
|
Задачка про кубики или параллелепипеды :-) FPD
|
|||
|---|---|---|---|
|
#18+
Ну, ладно - решение сваял или нет, ещё что-то надо ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 10:31 |
|
||
|
Задачка про кубики или параллелепипеды :-) FPD
|
|||
|---|---|---|---|
|
#18+
Рассмотрим случай id a1 a2 b1 b2 c1 c2 1 1 0 1 0 1 0 2 1 2 2 3 1 0 3 1 2 3 4 1 2 4 1 2 3 4 2 3 5 1 2 3 4 3 4 x=1.5, y=2.5 z=3.5 фильтруем по x, для x=1.5 подходят id=2,3,4,5 фильтруем предыдущему фильтру + фильтр по y, для y=2.5 подходят id=3,4,5 фильтруем предыдущему фильтру + фильтр по z, для z=3.5 подходят id=5 решение найдено При x=3, подходит интервал [1,2] то есть id=2,3,4,5 Дальше аналогично При x=0.5, подходит интервал [1,0], что означает, интервал [1,1] то есть id=1. Одна запись. Решение найдено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2005, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=287&tid=1592843]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 366ms |

| 0 / 0 |
