|
Задачка про остров
|
|||
---|---|---|---|
#18+
спирарь по краю (и оба, забыл сказать, возрастают из центра) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:37 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Ой, при правке исчезает вложение. возрастающая спираль как срединная разметка. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 13:40 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton Базовое ТЗ было в 1 посту. Я предложил - уйти от хексагональной сетки и подойти к квадратной. Зачем уходить? Чтобы понизить связность, рассматривая только 4х соседей? Так в этом и состоит одна из проблем, которую требуется преодолеть решающему эту задачу. Тогда уж давайте рассматривать 8 соседей на квадратной сетке. А еще лучше решить задачу и для квадратов с 8 соседями, и для хексов с 6 соседями (мы программисты или где). mayton Расширить объем исходных данных. По сути процессить растровые картинки высот. Изучить возможности параллелизма. Это как бы боковая ветка. Не особенно интересная. mayton Сделать дополнительное условие. Океан затапливает остров на высоту X а потом оступает на высоту Y. На сколько оступает - не интересно, это не усложняет задачу. Давайте считать, что вода всегда приходит из минус бесконечности и уходит в минус бесконечность. Таким образом, для каждой карты давайте решать 256 задач, с уровями прилива 0..255. mayton Я также предложил ввести тестовый сет данных. Я почему-то предполагаю что среди алгоритмов не будет абсолютных победителей а будут локальные победы на определенных типах карт. Например имеющие плато. Александр кажется тоже писал об этом. Уточнение - давайте для единообразия карты в градациях серого формате 24-бит *.bmp ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:12 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
вот, кстати, интересная карта ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:16 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton Базовое ТЗ было в 1 посту. Я предложил - уйти от хексагональной сетки и подойти к квадратной. Зачем уходить? Чтобы понизить связность, рассматривая только 4х соседей? Так в этом и состоит одна из проблем, которую требуется преодолеть решающему эту задачу. Тогда уж давайте рассматривать 8 соседей на квадратной сетке. А еще лучше решить задачу и для квадратов с 8 соседями, и для хексов с 6 соседями (мы программисты или где). Я собственно первый и предложил генерализировать алгоритм через графы. Просто мне хотелось иметь быстрый старт для всех участников. Поэтому я и предложил не 6-связную ячейку а 4-связную. А параллелизм на графах - это ожидаемая мной вишенка на торте. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:22 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov mayton Сделать дополнительное условие. Океан затапливает остров на высоту X а потом оступает на высоту Y. На сколько оступает - не интересно, это не усложняет задачу. Давайте считать, что вода всегда приходит из минус бесконечности и уходит в минус бесконечность. Таким образом, для каждой карты давайте решать 256 задач, с уровями прилива 0..255. Хорошо. Принято. Пускай будет 256 приливов океана с постепенным повышением максимума до 255. Но я также заметил что многие учебные образцы карт не нормированы от 0 до 256. Поэтому некоторые итерации для них будут вырожденные. Искусственно нормировать их не хотелось-бы. Тк. это вносит эффект квантизации. Появляются искусственные пики на гистограмме частот которых изначально не было. Тоесть надо решить что например делать с островом который изначально был задан высотами например от 100 до 150 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:26 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton, делать то же, что и со всеми другими - решать все 256 задач, пускай некоторые решения совпадут. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:29 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Уточнение - давайте для единообразия карты в градациях серого формате 24-бит *.bmp Я вообще не против любого графического формата. Можно и BMP. PGM я предлагал опираясь на опыт других хакатонов. Чем проще и демократичнее формат графики - тем быстрее будет вхождение разработчика. PGM - текстовый и ни у кого не должно быть проблем с его парсингом. Для просмотра PGM под Windows возможно надо установить какой-то тул. IrfanView например. По поводу BMP. Для данного конкретного требования (24bit-bmp) надо гарантировать что формула получения цветовой яркости (уровня серого) с 3х каналов RGB у нас у всех - одинаковая. Я использовал обычно такую. Общепринятые весовые коэфициенты для цветов. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:33 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton, можно просто использовать зеленый канал, остальные игнорировать, чтобы не было различий из-за преобразований ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 14:35 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Ну ОК. Бери вобщем любую формулу. Главное чтоб результат алгоритма по перформансу можно было сравнивать для 2х и более алгоритмов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 16:02 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
здесь результаты для зеленого канала картинки 22091638 пикселы шестиугольные, четные ряды сдвинуты вправо как здесь 22081766 Loaded ShaImg512_01.bmp Water=0 Volume=0 Water=1 Volume=0 Water=2 Volume=0 Water=3 Volume=0 Water=4 Volume=0 Water=5 Volume=0 Water=6 Volume=0 Water=7 Volume=0 Water=8 Volume=0 Water=9 Volume=0 Water=10 Volume=0 Water=11 Volume=0 Water=12 Volume=0 Water=13 Volume=0 Water=14 Volume=0 Water=15 Volume=0 Water=16 Volume=0 Water=17 Volume=0 Water=18 Volume=0 Water=19 Volume=0 Water=20 Volume=0 Water=21 Volume=0 Water=22 Volume=0 Water=23 Volume=0 Water=24 Volume=0 Water=25 Volume=0 Water=26 Volume=0 Water=27 Volume=0 Water=28 Volume=0 Water=29 Volume=0 Water=30 Volume=0 Water=31 Volume=0 Water=32 Volume=0 Water=33 Volume=0 Water=34 Volume=0 Water=35 Volume=0 Water=36 Volume=0 Water=37 Volume=0 Water=38 Volume=0 Water=39 Volume=0 Water=40 Volume=0 Water=41 Volume=0 Water=42 Volume=0 Water=43 Volume=0 Water=44 Volume=0 Water=45 Volume=0 Water=46 Volume=0 Water=47 Volume=0 Water=48 Volume=0 Water=49 Volume=0 Water=50 Volume=0 Water=51 Volume=0 Water=52 Volume=0 Water=53 Volume=0 Water=54 Volume=0 Water=55 Volume=0 Water=56 Volume=0 Water=57 Volume=0 Water=58 Volume=0 Water=59 Volume=0 Water=60 Volume=0 Water=61 Volume=0 Water=62 Volume=0 Water=63 Volume=0 Water=64 Volume=0 Water=65 Volume=0 Water=66 Volume=0 Water=67 Volume=0 Water=68 Volume=0 Water=69 Volume=0 Water=70 Volume=0 Water=71 Volume=0 Water=72 Volume=0 Water=73 Volume=0 Water=74 Volume=0 Water=75 Volume=0 Water=76 Volume=0 Water=77 Volume=0 Water=78 Volume=0 Water=79 Volume=0 Water=80 Volume=0 Water=81 Volume=0 Water=82 Volume=0 Water=83 Volume=0 Water=84 Volume=0 Water=85 Volume=0 Water=86 Volume=0 Water=87 Volume=0 Water=88 Volume=0 Water=89 Volume=0 Water=90 Volume=0 Water=91 Volume=3822408 Water=92 Volume=3826266 Water=93 Volume=4054286 Water=94 Volume=4069682 Water=95 Volume=4078860 Water=96 Volume=4084798 Water=97 Volume=4092854 Water=98 Volume=4100668 Water=99 Volume=4109408 Water=100 Volume=4115094 Water=101 Volume=4118297 Water=102 Volume=4122321 Water=103 Volume=4126679 Water=104 Volume=4133205 Water=105 Volume=4139389 Water=106 Volume=4140981 Water=107 Volume=4144421 Water=108 Volume=4148723 Water=109 Volume=4150103 Water=110 Volume=4151779 Water=111 Volume=4152281 Water=112 Volume=4328265 Water=113 Volume=4341611 Water=114 Volume=4368740 Water=115 Volume=4373696 Water=116 Volume=4379677 Water=117 Volume=4391969 Water=118 Volume=4398657 Water=119 Volume=4406226 Water=120 Volume=4413522 Water=121 Volume=4430303 Water=122 Volume=4437483 Water=123 Volume=4443877 Water=124 Volume=4449125 Water=125 Volume=4452753 Water=126 Volume=4462669 Water=127 Volume=4466359 Water=128 Volume=4471931 Water=129 Volume=4473113 Water=130 Volume=4474185 Water=131 Volume=4477017 Water=132 Volume=4527569 Water=133 Volume=4531572 Water=134 Volume=4542319 Water=135 Volume=4552712 Water=136 Volume=4554796 Water=137 Volume=4555839 Water=138 Volume=4557583 Water=139 Volume=4558344 Water=140 Volume=4558846 Water=141 Volume=4611850 Water=142 Volume=4612574 Water=143 Volume=4613462 Water=144 Volume=4614156 Water=145 Volume=4615818 Water=146 Volume=4615970 Water=147 Volume=4616232 Water=148 Volume=4616712 Water=149 Volume=4618930 Water=150 Volume=4619512 Water=151 Volume=4620262 Water=152 Volume=4620524 Water=153 Volume=4620936 Water=154 Volume=4621992 Water=155 Volume=4622784 Water=156 Volume=4623676 Water=157 Volume=4623782 Water=158 Volume=4623920 Water=159 Volume=4624238 Water=160 Volume=4624632 Water=161 Volume=4625982 Water=162 Volume=4627312 Water=163 Volume=4627386 Water=164 Volume=4627754 Water=165 Volume=4628294 Water=166 Volume=4628678 Water=167 Volume=4629346 Water=168 Volume=4629714 Water=169 Volume=4629934 Water=170 Volume=4630366 Water=171 Volume=4630962 Water=172 Volume=4631090 Water=173 Volume=4631728 Water=174 Volume=4632232 Water=175 Volume=4632876 Water=176 Volume=4632940 Water=177 Volume=4632940 Water=178 Volume=4633472 Water=179 Volume=4634270 Water=180 Volume=4635496 Water=181 Volume=4635704 Water=182 Volume=4636352 Water=183 Volume=4636850 Water=184 Volume=4636918 Water=185 Volume=4637212 Water=186 Volume=4637478 Water=187 Volume=4637876 Water=188 Volume=4637876 Water=189 Volume=4637876 Water=190 Volume=4637876 Water=191 Volume=4637892 Water=192 Volume=4637896 Water=193 Volume=4637896 Water=194 Volume=4637896 Water=195 Volume=4637896 Water=196 Volume=4637896 Water=197 Volume=4637896 Water=198 Volume=4637896 Water=199 Volume=4637896 Water=200 Volume=4637896 Water=201 Volume=4637896 Water=202 Volume=4637896 Water=203 Volume=4637896 Water=204 Volume=4637896 Water=205 Volume=4637896 Water=206 Volume=4637896 Water=207 Volume=4637896 Water=208 Volume=4637896 Water=209 Volume=4637896 Water=210 Volume=4637896 Water=211 Volume=4637896 Water=212 Volume=4637896 Water=213 Volume=4637896 Water=214 Volume=4637896 Water=215 Volume=4637896 Water=216 Volume=4637896 Water=217 Volume=4637896 Water=218 Volume=4637896 Water=219 Volume=4637896 Water=220 Volume=4637896 Water=221 Volume=4637896 Water=222 Volume=4637896 Water=223 Volume=4637896 Water=224 Volume=4637896 Water=225 Volume=4637896 Water=226 Volume=4637896 Water=227 Volume=4637896 Water=228 Volume=4637896 Water=229 Volume=4637896 Water=230 Volume=4637896 Water=231 Volume=4637896 Water=232 Volume=4637896 Water=233 Volume=4637896 Water=234 Volume=4637896 Water=235 Volume=4637896 Water=236 Volume=4637896 Water=237 Volume=4637896 Water=238 Volume=4637896 Water=239 Volume=4637896 Water=240 Volume=4637896 Water=241 Volume=4637896 Water=242 Volume=4637896 Water=243 Volume=4637896 Water=244 Volume=4637896 Water=245 Volume=4637896 Water=246 Volume=4637896 Water=247 Volume=4637896 Water=248 Volume=4637896 Water=249 Volume=4637896 Water=250 Volume=4637896 Water=251 Volume=4637896 Water=252 Volume=4637896 Water=253 Volume=4637896 Water=254 Volume=4637896 Water=255 Volume=4637896 Water=256 Volume=4637896 Total time=1890 ms ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 20:12 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
exp98 спирарь по краю (и оба, забыл сказать, возрастают из центра) Вот эта красивая. Заберу к себе в коллекцию. Жаль только что форум толстые картинки конвертит в jpg автоматически. Хотел заказать еще 1024х1024. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 20:36 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Саш. Да тут-бы не помешало время работы алгоритма посмотреть в милисекундах. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 20:38 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton там снизу вывел общее - 1.8 с ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 21:35 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Создал репку. Вот тут будут лежать синтетические тестовы данные https://github.com/Mark-Kovalyov/islands/tree/master/heightmap-synthetic ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 23:48 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Сюда я положу данные по картографии приближенные к реальным. https://github.com/Mark-Kovalyov/islands/tree/master/heightmap Ради экономии места я решил хранить данные в сжатых форматах png/jpg Но в обоих каталогах я положил скриптик наподобие Код: python 1.
Он конветит все файлы в нужный вам формат. Если заменить pgm на bmp то соответсвтенно будет сделана конверсия в тот формат который удобен. Кто хочет конвертить под Windows - должен установить комплект утилит ImageMagic https://imagemagick.org/index.php Реальные данные я буду потихоньку улучшать. Сейчас там есть некоторые образцы картинок которые имеют не-квадратную форму. Я думаю как их красиво кропнуть или скейльнуть. Есть также одна картинка PNG которая имеет глубину цвета 16 бит на канал что меня озадачило. Я пока не знаю что с ней делать и думаю какую выгоду с этого можно получить для теста. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 23:58 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton Заберу к себе в коллекцию. Жаль только что форум толстые картинки конвертит в jpg автоматически. Хотел заказать еще 1024х1024. Пока есть n=1000. Однако возникли проблемы. а) себе в коллекцию -- заметил, что забор по краю дороги при возрастании вверх берётся из "нижнего" по уровню витка (т.е. это вовсе и не забор, а тонкий пандус по краю обрыва достаточно сильно ниже уровня дороги в этом месте). Исправлено элементарно. б) n=1000 -- плотность шпиральных точек падает с ростом радиуса, под увеличением легко находятся точечные дырочки в "правлиьном" заборе, через к-рые будет стекать вода, если это башня, а не дыра. Казалось бы фиг с ним, но не по ТЗ. Пока в процессе придумывания как залатать дыры (с учётом п.(в)). в) n=1000 -- время работы! "гадский папа"(цэ), всегда надо "вовремя заткнуть фонтан идей"(цэ) Вечером замерял при k=5(кол-во витков) dk=18(кол-во точек ~1/плотность вдоль витка - ), 50 100 200 400 1000. 1000 за 760 сек. Ок. Навёл марафет с мини оптимизацией. В ходе марафета производительность просела в 4 раза и 1000 теперь за 45 мин, и это фигово. Не помогли даже контекстные сравнения с предыдущими версиями и перезапуски системы. Это что-то специфичное в МЛ. План оптимизации. Надо сделать плотность точек переменной (сделаю уменьшение тт от витка к витку ). Расчёт плотности примерно такой. Периметр квадрата =4n пиксов. Теоретически такого кол-ва лучей в большом витке должно хватить на покрытие всех тт квадрата. Уменьшить можно из оценки 2pi*(n/2)==3146 -- так для каждого витка. А пока для 1000 имеется 5400/3=1800 точек, т.к. витки на одном расстоянии, их радиусы условно 0.2 0.4 0.6 0.8 1, Сумма==3. Дефицит имеющихся точек неохота ликвидировать только пропорциональным наращиванием их числа повсюду. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 13:40 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
mayton какую выгоду с этого можно получить для теста ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 13:42 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
авторЗачем уходить? Чтобы понизить связность, рассматривая только 4х соседей? Для наглядности. До меня тоже не сразу дошло, но помучавшись с представлениями таки да - утилитарно то же самое, а даже на форуме изобразить в виде 2342345646 гораздо легче. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 18:30 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
АСУ ТПшник авторЗачем уходить? Чтобы понизить связность, рассматривая только 4х соседей? Для наглядности. До меня тоже не сразу дошло, но помучавшись с представлениями таки да - утилитарно то же самое, а даже на форуме изобразить в виде 2342345646 гораздо легче. Уменьшая количество соседей, мы резко снижаем вычислительную сложность задачи. Надо наоборот увеличивать, как я уже писал выше. Например, 8 клеток-соседей для одной квадратной клетки не менее наглядно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 23:01 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
exp98 б) n=1000 -- плотность шпиральных точек падает с ростом радиуса, под увеличением легко находятся точечные дырочки в "правлиьном" заборе, через к-рые будет стекать вода, если это башня, а не дыра. Казалось бы фиг с ним, но не по ТЗ. Если на самых крайних поворотах с большим радиусом где-то проскочит пиксель-ямка то вся картинка от этого станет испорчена. Но стоит-ли из за 1 пикселя удесятерять объем работ по вычислению? Думаю не стоит. Если ты прогонишь фильтр "Медиана" то он 100% этот битый пиксель закроет а общие характеристики Вавилонской башни не изменятся. Не парься долго. Отфильтруй и все. Photoshop любой версии и Gimp всегда имеют этот фильтр в комплекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 23:31 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
exp98 mayton какую выгоду с этого можно получить для теста Я не парюсь, а устраняю баги,глазами разве искать буду? Мадиану да, попробовать можно. Только не в картинке, а в исходном линейном массиве. При плотности до dk=18 уже в 3-м витке есть дыры даже для n=400. А вот для 1024 последний виток - каждая вторая дырка, и ты ещё хочешь 7 витков вместо 5. Так что плотность всё равно увеличивать. Но теперь это быстро как прежде. Но не сегодня уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 20:16 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Я ещё вот что скажу. Гр. редакторы - это путь к не повторямости эксперимента. Помимо того, что потом надо будет растр внедрять в массивы, хоть и не так это важно для забора, что массив будет в хаотическом порядке и необработкоспособен. И мне это сейчас не интересно. В принципе мне осталось дожать вариант с кусочно-постоянным шагом спирали. Но также любопытен и вариант - не накладыват забор на закрашенную дорогу (как сейчас), а пройтись вдоль края из центра как по лабиринту и по ходу ставить забор. Он будет немного извилистым, но это менее эклектично. Перепад высот по краю дороги большой, должно получиться. Но надо это проверять. Мы достаточно обрисовали подводных камней и вариантов. Вы вольны воспользоваться помощью более умелых и быстрых умельцев. Потому что меня сейчас задерживает только забор. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 13:08 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Фильтр медиана достаточно простой. Я могу описать алгоритм. Или даже сделаю имплементацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 14:35 |
|
Задачка про остров
|
|||
---|---|---|---|
#18+
Я знаю, что такое медиана. Но здесь случай, когда нужно на плоскости сгладить линию. Предлагаетется вместо забора насыпь, а потом совместить насыпь и дорогу. Нехорошие случаи когда линия в конце вида (110001000011100000 ...). Только в несколько проходов. Могу эту дорогу без забора закинуть сюда зипом , 1024 матрицу 7 витков, иотдельно файл спирали. А можно, как перед этим написал, модифицировать алгоритм жука под задачу и проползти вдоль дороги без забора. Ещё проще подождать лишний час рассчётов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 18:19 |
|
|
start [/forum/search_topic.php?author=Waterspout&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 444ms |
total: | 745ms |
0 / 0 |