|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev Aleksandr Sharahov Все ячейки по границе контура станут срезающими и срежут уровень внутри контура. Внутри контура не обязательно все ниже, там могут быть дургие контуры, а в них еще контуры, не совсем понимаю каким образном наружные срежут все внутри, глубина лужи может быть маленькой, а лужа при этом очень высоко. iOracleDev Это приведет к лишней работе по многократному срезу уровня в ячейках. Мы не будем рассматривать ячейки статус которых уже точно определен, по крайней мере описанный алгоритм логически понятен и даст верный результат, алгоритм с сортировкой по высоте меня сразу настораживает, каким образом он обработает многократно вложенные замкнутые контуры? Для внутренних контуров будет все то же самое: когда срезание дойдет до ячейки внутреннего контура, эта ячейка будет помечена как срезающая. А сортировка по высоте значительно ускоряет работу. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2020, 20:31 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Рекурсивный алгоритм можно еще упростить. Специальный признак срезающей ячейки не требуется, Вместо него можно использовать проверку на равенство высоты ячейки и высоты уровня воды в этой ячейке. Завтра приведу окончательный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2020, 23:57 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Здесь оптимизированный вариант решения: 1. Сортировка вставками заменена на сортировку подсчетом массива координат ячеек, теперь сортировка почти не влияет на время работы. 2. Рекурсия заменена циклом, для возврата в прежнее состояние запоминаем 1-байтовое направление, теперь нам не грозит переполнение стека на больших N. 3. Вычисление координат соседей выполняется непосредственно в теле процедуры SetLevel с использованием массива констант, стало считать чуть быстрее. 4. Размеры структур уменьшены, чтобы можно было оценить время работы с ростом N, теперь остров размером 10000х10000 считается за 6 сек. Код: pascal 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. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 21:46 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov теперь остров размером 10000х10000 считается за 6 сек. Осталось узнать правильно или нет)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:10 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev, оно совпало с предыдущими ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:14 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov оно совпало с предыдущими ) А с правильными совпало?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:19 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton правильную вещь предлагал, упростить до квадратов и использовать 22080256 . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:21 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev, предыдущие были проверены на двух небольших примерах, посчитанных вручную. Было здорово сравнить с другим автором, но где ж его взять ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:24 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev mayton правильную вещь предлагал, упростить до квадратов и использовать 22080256 . 1) нафига упрощать до квадратов? что мешает посто сдвинуть четные строки вправо и решать в шестиугольниках? тут изюминка в громадной рекурсии, от которой надо избавиться. 2) чем это лучше случайных данных или специального маленького замудренного примера? все равно придется эту хрень считать независимым способом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:30 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, а можешь выложить карты и результаты к ним в виде файликов. Я планирую на неделе докодить свой вариант 22077648 и сразу сравнить. У тебя ведь 6-угольники? Надо утвердить формат карты ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:41 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1, через часок выложу ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:43 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Декартова система координат с прямоугольной сеткой - легче визуализируется. А визуализация даёт вам возможность контроля. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 22:56 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton, шестиугольники тоже нормально визуализируются и контролируются вот реальные результаты для острова 10х10 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 23:38 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1, кстати я подумал, зачем передавать файлы? Гораздо проще сравнивать результаты для 3х параметров, с помощью которых генерируем карту: RandSeed, RandRange, XCount (YCount=XCount). Процедура генерации карты: Код: pascal 1. 2. 3. 4. 5. 6. 7.
Связность ячеек понятна из моего предыдущего сообщения 22081766 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2020, 23:48 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Код датчика случайных чисел в Delphi Код: pascal 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 00:08 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov кстати я подумал, зачем передавать файлы? кстати, твой алгоритм сможет проглотить добавку от Майтона? 22077662 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 00:19 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Имя пользователя1 Aleksandr Sharahov кстати я подумал, зачем передавать файлы? кстати, твой алгоритм сможет проглотить добавку от Майтона? 22077662 Чтобы сверить результаты, достаточно передать 3 параметра, которые полностью определяют сгенерированный файл. Добавку от Майтона он не проглотит, придется модифицировать одну строчку. Ну и неясность некоторая имеется: волна высотой 3 перевалит через гору высотой 3 или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 00:25 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov кстати я подумал, зачем передавать файлы? Чтобы визуально оценить результат глядя на сгенерированную картинку, например загоняем файл с теми вариантами которые хотим проверить, обсчитываем, генерим результирующую картинку и сравниваем. Пример картинки 160x120 256 бит ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 00:45 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev Aleksandr Sharahov кстати я подумал, зачем передавать файлы? Чтобы визуально оценить результат глядя на сгенерированную картинку У нас нет такой задачи как "визуально оценить". Ну, оценил визуально: вроде похоже на то, что ожидается. А что дальше: верно или неверно? У нас 2 другие задачи. 1) отладить программу на заранее точно просчитанных примерах. 2) сравнить результаты участников. Обе задачи можно решить, передавая параметры алгоритма генерации карты и ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 09:49 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Как будет угодно. Но чем бы вы не занимались и что-бы вы не программировали. А визуальная оценка корректности резульатата нужна постоянно. И я сильно сомневаюсь что все из присутствующих пишут модульные тесты. А битмап я предлагал в совокупности с оптимизацией "островной задачи" с учотом возможностей параллелизма. Вы же не собираетесь оценивать параллелизм на этих мелких текстовых файлах? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:08 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton Как будет угодно. Но чем бы вы не занимались и что-бы вы не программировали. А визуальная оценка корректности резульатата нужна постоянно. И я сильно сомневаюсь что все из присутствующих пишут модульные тесты. А битмап я предлагал в совокупности с оптимизацией "островной задачи" с учотом возможностей параллелизма. Вы же не собираетесь оценивать параллелизм на этих мелких текстовых файлах? Опять же: зачем пытаться параллелить все подряд? Эта задача и параллелится плохо и ее решение в одном потоке в максимальной размерности займет примерно 1 мин. Тут это ни к чему. Кстати есть мысли, как еще ускорить, как будет время попробую реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:18 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
За способность чего-то "распараллелится" - платят деньги. Собственно ... это тренд нашего десятилетия. Хотя внутренне - я с вами согласен. Графовые задачи вообще плохо параллелятся. В этом и челлендж. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 10:29 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov У нас нет такой задачи как "визуально оценить". Ну, оценил визуально: вроде похоже на то, что ожидается. А что дальше: верно или неверно? У нас 2 другие задачи. 1) отладить программу на заранее точно просчитанных примерах. 2) сравнить результаты участников. Обе задачи можно решить, передавая параметры алгоритма генерации карты и ответ. Где взять заранее точно просчитанные примеры нужной сложности и имеющие именно тот рельеф который нужно проверить? Параметры генерации карты не дадут карту нужного рельефа, нам не нужна случайная карта, нужна карта со специально нарисованным рельефом реализующим различные сложные случаи, тестирование не делается случайным образом, при тестировании проверяют вполне конкретные ситуации. Визуализация даст и вам и остальным понять правильно ли отработал алгоритм конкретно заданный случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 15:12 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
iOracleDev Где взять заранее точно просчитанные примеры нужной сложности и имеющие именно тот рельеф который нужно проверить? Хороший вопрос. У вас есть ответ? iOracleDev Параметры генерации карты не дадут карту нужного рельефа, нам не нужна случайная карта, нужна карта со специально нарисованным рельефом реализующим различные сложные случаи, тестирование не делается случайным образом, при тестировании проверяют вполне конкретные ситуации. Разумеется. iOracleDev Визуализация даст и вам и остальным понять правильно ли отработал алгоритм конкретно заданный случай. Можно пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 15:42 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Можно пример? Выше нарисован. Было бы очень неплохо чтобы можно было скормить на обработку графический или ppm файл 256 градаций серого и получить на выходе файл у которого все пиксели оставшиеся под водой имеют белый цвет. mayton, Нет примера, как в java получить двумерный байт-массив из битмапа или ppm, второй наверное даже лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2020, 15:51 |
|
|
start [/forum/topic.php?fid=16&msg=39927224&tid=1339799]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
199ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 543ms |
0 / 0 |