powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
25 сообщений из 421, страница 10 из 17
Задачка про остров
    #39929414
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Над параллелизмом думал?


А что там думать, трясти надо. Если на 4 части резать, то:
1) для каждого из 4 квадратов решаем немного измененную задачу со срезающими
ячейками только по 2 внешним сторонам (результат не подсчитываем),
2) объединяем соседние решения по 2, запуская процедуру среза и примыкающих ячеек,
3) объединяем половинки, запуская процедуру среза и примыкающих ячеек.
4)считаем результат

Но мне интереснее отжать текущую реализацию без разрезаний.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929418
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
3) объединяем половинки, запуская процедуру среза и примыкающих ячеек.

Если ячейка из середины одной секции имеет выход в океан через пару других секций?
...
Рейтинг: 0 / 0
Задачка про остров
    #39929419
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
mayton
Над параллелизмом думал?


А что там думать, трясти надо. Если на 4 части резать, то:
1) для каждого из 4 квадратов решаем немного измененную задачу со срезающими
ячейками только по 2 внешним сторонам (результат не подсчитываем),
2) объединяем соседние решения по 2, запуская процедуру среза и примыкающих ячеек,
3) объединяем половинки, запуская процедуру среза и примыкающих ячеек.
4)считаем результат

Но мне интереснее отжать текущую реализацию без разрезаний.

Хорошо. Отжимай. Я попробую на этих выходных что-то написать.

Неделька выдалась бешеная. Этой задаче я мог эпизодически уделять по 5 мин времени в сутки. +У меня еще
штук 5 интересов "около" этого.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929422
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Твой я не понимаю, за счет чего он должен выбираться из кратеров?
Ты для каждой плитки ищешь выход в океан?
Как определяешь что не попал в loop по плиткам?
Как выходишь за пределы стены кратера, при условии неограниченной вложенности кратеров и их уровней?
Сколько проходов по каждой плитке и от чего зависит, какая временная сложность алгоритма?


1. Выход из кратера за счет того, что его "берега" выше "долины",
значит, они будут помечены как точки среза,
от которых потом будут образованы новые срезы.

2. Зацикливания нет, т.к. мы все время идем в сторону увеличения уровня
при вызове процедуры среза и внутри нее.

3. Выход за пределы стены с помощью стены, т.к. новый срез образуется из нее.

4. Один проход по каждой плитке (1 срезание), хотя проверок от соседей может быть больше.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929425
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
А что там думать, трясти надо. Если на 4 части резать, то:
1) для каждого из 4 квадратов решаем немного измененную задачу со срезающими
ячейками только по 2 внешним сторонам (результат не подсчитываем),
2) объединяем соседние решения по 2, запуская процедуру среза и примыкающих ячеек,
3) объединяем половинки, запуская процедуру среза и примыкающих ячеек.
4)считаем результат
кейс: остров с высокими краями-стенами (черная), низиной внутри (коричневая), а в красной точке находится самая низкая точка стены.
3 четвертинки придется пересчитывать по уровню затопления, когда будем объединять.
То есть ничего не выигрываем в данном случае.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929426
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Aleksandr Sharahov
3) объединяем половинки, запуская процедуру среза и примыкающих ячеек.

Если ячейка из середины одной секции имеет выход в океан через пару других секций?


Для моего алгоритма это не важно.
Все возможные срезы для каждой части были сделаны независимо,
теперь надо выполнить их диффузию в соседние части.

Я не утверждаю, что это быстро, но это даст правильный результат.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929428
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Сколько проходов по каждой плитке и от чего зависит, какая временная сложность алгоритма?
временная сложность на данный момент линейная, но только на предположении, что все высоты - целые от 0 до 256. Если их сделать вещественными, алгоритм вернется к своему "законному" O(n*ln(n))
...
Рейтинг: 0 / 0
Задачка про остров
    #39929430
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1,

а я и утверждаю, что будет выигрыш.

Например, со спиралькой ваще кранты
...
Рейтинг: 0 / 0
Задачка про остров
    #39929491
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я в топике, как архивариус соберу различные маргинальные тест кейсы "острова".
Мы подыщем для них картинки и будеем использовать как

1. Синтетические тесты.
  • Прямоугольная плоскость (Plane)
  • Бассейн (Pool)
  • Случайный шум. Острые пики. (Noise-map)
  • Прямоугольная пирамида с вершиной в центре карты (Pyramid)
  • Спираль (Spyro)
  • Лабиринт с стенами одинаковой высоты (Maze)
2. Приближенные к реальным.
  • Классический остров-гора. Монотонный. (Mountain)
  • Остров с кратером потухшего вулкана. (Volcano)
  • Архипеллаг мелких островов разделенных океаном. (Islands)
  • e.t.c. (+еще побольше вариаций)

При любых профилях карты океан всегда омывает и затапливает крайние пиксели по бордюру.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929545
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со ссылкой на голосование У кого какое разрешение моника . Большинство мембером имеют моник Full-HD и я надеюсь
что они нормально отображают на скрине картинку с разрешением 1024х1024 на
уровне пиксельной точности.

Выше создавать нет смысла т.к. она будет либо не кратная степени двойки либо будет
отфильтрована фильтрами низкой частоты что сведет на нет ваши усилия по расчету
конкретных отдельно стоящик пикселов.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929553
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
iOracleDev
Сколько проходов по каждой плитке и от чего зависит, какая временная сложность алгоритма?
временная сложность на данный момент линейная, но только на предположении, что все высоты - целые от 0 до 256. Если их сделать вещественными, алгоритм вернется к своему "законному" O(n*ln(n))


Не совсем так.
O(n*ln(n)) - это только на этапе сортировки сравнениями. Если подойдет подсчет или радикс, то O(n).
На остальных этапах - O(n), т.к. количество заходов в каждую ячейку фиксировано.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929555
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
Имя пользователя1,

а я и утверждаю, что будет выигрыш.

Например, со спиралькой ваще кранты


а я и НЕ утверждаю, что будет выигрыш.

Например, со спиралькой ваще кранты
...
Рейтинг: 0 / 0
Задачка про остров
    #39929600
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более упрощенная задача проскакивала на хабре, более того, там было решение в 1 проход, сдесь немного сложнее, как минимум грани и мерность другая
https://habr.com/ru/post/200190/
...
Рейтинг: 0 / 0
Задачка про остров
    #39929611
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Монотонность "слева". Пересекается с монтонностью "справа".

И получаем ответ для 1-мерного массива высот.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929615
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksandr Sharahov
2. Зацикливания нет, т.к. мы все время идем в сторону увеличения уровня
при вызове процедуры среза и внутри нее.

3. Выход за пределы стены с помощью стены, т.к. новый срез образуется из нее.

Площадка ниже остаточного уровня воды в кратере который ниже уровня подъема воды, однако этот кратер внутри дургого кратера, т.е. сначала подъем на стену, потом спуск и снова подъем, который уже выше уровня подъема воды, т.е. все что внутри должно оказаться сухим.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929617
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
При любых профилях карты океан всегда омывает и затапливает крайние пиксели по бордюру.

Я бы делал не так, собственно и сделал не так, остров имеет высоту от 0 до 255, при этом остаточный уровень воды может быть выше 0, т.е часть острова может остаться затопленной полностью. Ячейки на одном уровне с уровнем океана после отлива сухие.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929623
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
mayton
При любых профилях карты океан всегда омывает и затапливает крайние пиксели по бордюру.

Я бы делал не так, собственно и сделал не так, остров имеет высоту от 0 до 255, при этом остаточный уровень воды может быть выше 0, т.е часть острова может остаться затопленной полностью. Ячейки на одном уровне с уровнем океана после отлива сухие.

Я не то имел в виду. Если вы пойдете на хитрость и создадите "куб" c высотой 255 и размерами например 1024х1024
а уровень океана поднимем на высоту например 300 то по идее ваш куб должен быть затоплен сверху. Эдакий себе
всемирный потоп.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929624
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDev
Aleksandr Sharahov
2. Зацикливания нет, т.к. мы все время идем в сторону увеличения уровня
при вызове процедуры среза и внутри нее.

3. Выход за пределы стены с помощью стены, т.к. новый срез образуется из нее.

Площадка ниже остаточного уровня воды в кратере который ниже уровня подъема воды, однако этот кратер внутри дургого кратера, т.е. сначала подъем на стену, потом спуск и снова подъем, который уже выше уровня подъема воды, т.е. все что внутри должно оказаться сухим.


Алгоритм пометит высокие ячейки как новые точки среза,
но срезать по ним не будет, так как обход будет завершен досрочно
на ячейке с высотой меньше уровня прилива.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929626
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot mayton#22084832]
iOracleDev
Я не то имел в виду. Если вы пойдете на хитрость и создадите "куб" c высотой 255 и размерами например 1024х1024
а уровень океана поднимем на высоту например 300 то по идее ваш куб должен быть затоплен сверху. Эдакий себе
всемирный потоп.

В исходной постановке и был всемирный потоп, потом добавили произвольный уровень максимального подъема воды, а я еще добавил и уровень океана, который после отлива может быть выше какой то части острова.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел достигнуть договоренностей о краевых условиях алгоритма. Тоесть когда океану
нет места на карте - океан считается пограничными пикселями с координанами например (-1,-1), (+1024,+1024)
для моей карты.

Иначе алгорим может не сработать или вам придётся вводить в него кучу поправок на края.
Это - нудотсво.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929628
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Остров ограничен краями прямоугольника, снаружи только океан, внутри все считается островом, но он может быть под водой, например уровень океана 1, минимальная высота плитки острова 0, часть острова навсегда останется под водой. Т.е. я к тому что уровень океана тоже можно двигать, как и уровень наводнения.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929629
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot iOracleDev#22084843]
mayton
пропущено...

В исходной постановке и был всемирный потоп, потом добавили произвольный уровень максимального подъема воды, а я еще добавил и уровень океана, который после отлива может быть выше какой то части острова.


На мой взгляд, уровень отлива - лишнее условие, т.к. оно равносильно тому,
что все "краевые" точки острова и их соседи (и соседи соседей...)
приподнимаются до уровня отлива, если их не считать точками острова.
А если считать, то и дно океана надо считать.
К тому же это можно свести к разности 2х задач с 2 разными приливами.

В общем, пусть при отливе вода уходит туда, откуда пришла - в минус бесконечность.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929630
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще не понимаю зачем вы различаете уровень океана и прилива или наводнения.

По мне это - одно и тоже в топике.
...
Рейтинг: 0 / 0
Задачка про остров
    #39929634
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я вообще не понимаю зачем вы различаете уровень океана и прилива или наводнения.

По мне это - одно и тоже в топике.


Ну ты склеротик: 22077662 ))
...
Рейтинг: 0 / 0
Задачка про остров
    #39929639
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно забей. Проехали.
...
Рейтинг: 0 / 0
25 сообщений из 421, страница 10 из 17
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задачка про остров
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]