2. Алгоритмы. Поиск наибольшего значения, столбы в воздухе

Ойындар

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

Пікірлер: 4

  • @romcorn3731
    @romcorn3731Ай бұрын

    1)Найдём длину первого столба столба (Изначально он будет считаться наибольшим). 2) Находим высоту наивысшего блока из всех столбов.(По алгоритму для упрощеной версии этой задачи) 3.2)Проверяем наличие блоков у всех столбов через промежуток равный длине наибольшего столба.(Например длина первого столба 6, высота высшей точки 20, тогда проверяем наличие блоков на высотах:0;6;12;18;20)(Наибольший для нас столб можно не счетать) 3.2)Все столбы которые пересекли эту высоты хотябы в 1 точке проходят дальше, остальные нас уже не интересуют. 3.3) Находим длины столбов которые пересекли наибольшое количество точек. Если они меньше чем наибольший исключаем их. Если больше, то повторяем процедуру с новой длиной. 3.4)Когда все столбы будут пересекать только 1 точку переходим к второму циклу. 4.1) Поочередно ищем длину оставшихся, и повторяем прошлый цикл только уже для на меньшего значения. 4.2) Удаляем столбы которые пересекают на две точки меньше чем пересекает столб с наибольшим пересечением точек.(Максимум столб пересёк 4 точки, значит столбы которые пересекли 2 и меньше точек можно отбросить) 4.3) В поисках наименьшего и отбрасывания лишних, мы найдём длины всех столбов. Надо лишь выбрать из них наибольший. ----- Таким образом наименьшие столбы будут быстрее уходить и мы сконцентрируемся на подсчёте наибольших. Чем больше длины, тем должен быть эффективнее алгоритм.

  • @minecraftprogramming

    @minecraftprogramming

    Ай бұрын

    1) Если первый столб это 1 блок на высоте 1? 2) Как найти высшую точку? Что за Алгоритм?

  • @romcorn3731

    @romcorn3731

    Ай бұрын

    @@minecraftprogramming 1)То нам не повезло :). Тогда это превратиться в простой перебор. 2) Ставим на корды первого столба. Телепортируемся вверх если есть в блок, если пустота то не меняя высоту телепортируемся к следующему. (В нашем случае при старте надо тепаться верх пока не найдём столб. И еще когда он дойдёт до последнего столба снова тепнуть его на начало(также не меняя высоту), если они совпали то это и есть нивысшая точка.(Работает при условии что каждый столю имеет хотябы 1 блок с высотой как у блока другого столба.(Если условии не работает, то значит и весь алгоритм тоже, так как это будет полностью хаотичная система. Там можно предложить только если соседнии столбы одновременно считать))

  • @minecraftprogramming

    @minecraftprogramming

    Ай бұрын

    Идея то у тебя нормальная, только её нужно развить. Агент должен использовать накопленные в ходе исследования знания. 1) В процессе у него изменяется переменная "высота самого высокого столба". Как это использовать? 2) Он может исключать из исследования координаты столбов, которые точно не подходят.

Келесі