|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
AmKadЗаинтриговал. Третий час с моделью бьюсь, победить не могу: cyclic/acyclic. Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:35 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
andrey_anonymous, спасиб, примерно етого я и хотел добится для мене не просто, буду осознавать .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:43 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Staxбуду осознавать Из трюков там только смешанное использование dimension - как индекса последовательности Ai и как кэша встреченных значений последовательности t, собственно поэтому пришлось оборачивать в динамическое представление - отфильтровать Ai is not null... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:52 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровВсе проще -- надо требоватьНе совсем понятно к чему это ёрничанье. На Stack Overflow можно удалять свои темы, посты или редактировать их как угодно. И ничего - живет ресурс. И что удивительно без взаимных тычков. Диктатура имеет смысл только в определенных сообществах. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:01 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Staxтекущую где-то запоминатьОчередная вариация Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:25 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
dbms_photoshopStaxтекущую где-то запоминатьОчередная вариация[/src] Красиво, но размножение текущего значения по всей коллекции на каждой итерации смущает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:43 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
andrey_anonymous, Да, решение с "душком". PS. Можно учитывать заполненность первой строки и уменьшить число итераций на одну, при этом убрав ignore nav в предложенных вариантах с минимальными изменениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:48 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
dbms_photoshopМожно учитывать заполненность первой строки Еще можно попробовать учесть тот факт, что минимальное возможное значение i-го элемента последовательности растет, что теоретисски допускает сокращение размера кэша значений. Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:02 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
dbms_photoshopДа, решение с "душком". Предлагаю перевести конкурс с критерия "многабукфф" в более традиционное русло: Попробовал "вариацию" на 100000 итерациях - что-то оно "ушло в себя". Вариант Соломона (с двойной итерацией) тоже. Мой вариант уложился в 3 секунды. Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:13 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
andrey_anonymous, Трюк с nested cells не оставляет никаких шансов прочим проверкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:20 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
andrey_anonymousКрасиво, но размножение текущего значения по всей коллекции на каждой итерации смущает. Ну мое решение делает тоже самое. Без размножения: Код: plsql 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. 42.
Производительность: Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 18:18 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SYandrey_anonymousКрасиво, но размножение текущего значения по всей коллекции на каждой итерации смущает. Без размножения: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Ммм? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 18:26 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
andrey_anonymousМмм? Код: plsql 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.
Я не учел что: A(0) = 0 A(n) = A(n-1) - n if A(n-1) - n > 0 and is new, else A(n) = A(n-1) + n может породить и порождает дубли. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 19:40 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SYЯ не учел что: A(0) = 0 A(n) = A(n-1) - n if A(n-1) - n > 0 and is new, else A(n) = A(n-1) + n может породить и порождает дубли. Угу. Но сама идея мне понравилась, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 20:11 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
boobydbms_photoshop... это навело на мысли что тема создана не на подходящей площадке и подобное баловство стоит делать на соответствующих сайтах. а я уж понадеялся, что ты понял неадекватность задачи для решения её на "голом" sql, совсем без pl/sql. Интересно было бы посмотреть на эффективное решение с помощью pl/sql и сравнить его по времени выполнения с вариантом SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 02:01 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
boobyНеобходимая по условию проверка на существование, на таком голом sql, которому нельзя заказать временное индексирование уже набранных значений, гарантированно неэффективна . Решение подобных задач и на pl/sql не эффективно, если памяти, для языка способного с ней работать напрямую, хватает чтобы закрыть максимальное значение ряда, то индексирование тоже неэффективно с точки зрения производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 13:48 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SkilledJuniorboobyНеобходимая по условию проверка на существование, на таком голом sql, которому нельзя заказать временное индексирование уже набранных значений, гарантированно неэффективна .Решение подобных задач и на pl/sql не эффективно...Не верю. С остальными запятыми, кто на ком стоял, я разобраться не смог. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 14:00 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SkilledJuniorИнтересно было бы посмотреть на эффективное решение с помощью pl/sql и сравнить его по времени выполнения с вариантом SY. Запросто. SkilledJuniorРешение подобных задач и на pl/sql не эффективно Мой вариант с одноатрибутным массивом из N элементов где N число элементов пoследовательности не проходит так-как пoследовательность не уникальна. Поэтому приходится использовать двухатрибутный массив из M элементов где M = N + X так как приходится в нем хранить флаг "а был ли этот мальчик", как Андрей и сделал. В результате приходится оборачивать MODEL в in-line view или CTE и отсеивать лишние X элементов (условие where Ai is not null). В PL/SQL можно создать два одноатрибутных массива и тогда отсеивать не нужно: Код: plsql 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.
Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49.
Можно еще с pipelined побаловаться. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2018, 16:15 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SY, К сожалению разреженный ряд получается, простым массивом неэффективно по использованию памяти, но люблю я обычные массивы)) Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2018, 01:14 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
-2-Не верю. С остальными запятыми, кто на ком стоял, я разобраться не смог. Выделяем область памяти, записываем в нее битовые флаги, число ряда преобразуется в адрес битового флага, по сути оно представляет собой смещение от начала выделенной области памяти. Для проверки существования числа в уже сформированном ряду нужно одно прямое чтение из памяти и извлечение из прочитанного битового флага, никаких массивов и индексаций, PL/SQL такое могёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2018, 01:31 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
SkilledJunior и извлечение из прочитанного битового флагаЛишние сдвиги быстродействия не прибавят. Но, если взялся за третий критерий эффективности - объем памяти, давай и компрессию наворачивай. SkilledJuniorPL/SQL такое могёт?Работа с битами для plsql не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2018, 14:56 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
haydeНа правах шуткиЗдесь проверяется цикличность и при сложении и при вычитании, а должна только при вычитании. Соответственно 42 во второй раз не выбирается. Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
Можно расписать условие соединения и попытаться обмануть Оракл с помощью prior sys_guid, но при таком подходе цикличность вообще не будет проверяться. Код: plsql 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2018, 17:11 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2020, 14:51 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Miserere, Если и занимаешься некрофильством то хоть приводи улучшенное решение. Ну а теперь запусти это c rules iterate(100000) и сравни (если дождешься) с моим Код: plsql 1. 2. 3. 4. 5. 6.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2020, 16:21 |
|
Фотошоп, возвращай свою пятничную про последовательности
|
|||
---|---|---|---|
#18+
Это challenge, SY, производительность тут у ходит на второй план, никто не ставит это на прод. Я задался вопросом как уйти отStaxтекущую где-то запоминать С выходом на дубликат через флажок и его вариациями любой дурак сделает. Хочешь побахвалиться - сделай свои Код: plsql 1.
с одним measure ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2020, 20:24 |
|
|
start [/forum/topic.php?fid=52&msg=39716813&tid=1880586]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 455ms |
0 / 0 |