Задать вопрос
  • Каков алгоритм решения задачи о жуках, которые не любят находиться близко друг от друга?

    lastuniverse
    @lastuniverse
    Alex Gutter, посмотрел решение что вы дали, используемый в нем подход по сути идентичен тому, к которому пришел я. Отличается лишь в мелких деталях и синтаксических особенностях языка )))

    Так что считаем что подход уже опробирован и утвержден, а значит и решение верное ))))

    PS: немного пояснений.
    от 6.1-6.2 отказался, теперь алгоритм выглядит так:
    1. создаем массив, в котором будем хранить размеры свободных от жуков областей камней (изначально в массиве всего 1 запись равная начальному количеству камней.
    2. для каждого жука делаем:
    2.1 вынимаем из массива первую ячейку (она будет самым большим куском)
    2.2 отнимаем от ее размера 1 (это жук занял 1 камень)
    2.3 делим ее пополам, при этом если пополам не делится, то левую часть будем считать большей а правую меньшей (например 7/5 = 3.5, тоесть левая=4 а правая=3)
    2.4 вставляем в конец массива обе части, при этом потенциально большую (левую) вставляем в первую очередь а потенциально меньшую (правую) во вторую. Это даст нам то, что в первой ячейке массива всегда будет самая большая часть из имеющихся
    2.5 если еще есть жуки возвращаемся на 2.1
    3. дойдя до сюда, получаем ответ (лево и право вычисленные для последнего жука :)
  • Каков алгоритм решения задачи о жуках, которые не любят находиться близко друг от друга?

    lastuniverse
    @lastuniverse
    Сейчас попробую описать ход мыслей:

    1. если пойти в лоб, то делаем массив размером Х и заполняем его жуками.
    2. не учитываем многовариантность о которой говорил Rsa97 , считая задачу симметричной и соответственно решения (3,4) и (4,3) равнозначными. То есть заполнять будем от середины (условия максимального удаления от края)
    3. таким образом на каждом шаге (жуке) сканируем массив в поиске свободных зон. сканирование начинаем от центра, и выбираем зону, в которой до жуков и краев максимальное расстояние.
    4 расставив всех жуков находим расстояния слева и справа от последнего.

    Данное решение однозначно не то что нам надо, громоздкое, при огромных значения Х и Y работать будет очень долго, памяти жрать много. Улучшаем:
    5. по сути на каждом шаге расстояние делится примерно пополам. при этом имеется закономерность, количество жуков, необходимое для уменьшения всех свободных участков в 2 раза на каждом шаге будет удваиваться. Это позволит вообще не создавать массив камней а подойти к решению аналитически.
    6. пробуем составить алгорим:
    6.1 вычисляем количество жуков, необходимых для сокращения пространства в 2 раза (на первом шаге 1, на втором 2 на третьем 4 и т.д)
    6.2 вычисляем количество шагов, для которых хватает жуков )
    6.3 определяем размерность оставшегося после этих шагов пространства (тут необходимо немного подумать, так как есть нюансы)
    6.4 оставшееся пространство делим пополам, округляем и получаем значения справа и слева.

    Сейчас попробую все это реализовать на js
  • Каков алгоритм решения задачи о жуках, которые не любят находиться близко друг от друга?

    lastuniverse
    @lastuniverse
    Alex Gutter, я наверно все таки толкнул вас не в том направлении, несмотря на то, что задача имеет схожесть с фракталами, в силу условия она дискретна и имеет сугубо целочисленный характер, поэтому при увеличении Y ошибка будет пропорционально возрастать (в случае если свободное пространство имеет четное количество позиций жук будет занимать позицию близкую к середине но округленную до целого, и с каждым новым шагом эти ошибки будут накладываться)
    Отсюда следует, что рассчитать через фракталы можно лишь приблизительную (оценочную) величину.
    С другой стороны о моей неправоте говорит сам характер задачи (если я правильно понял тэг АЛГОРИТМЫ).

    Я так понимаю решение должно быть алгоритмическим (некий алгоритм и программа его реализующая) ?
  • Какой алгоритм для решения задачи на динамическое программирование про лестницу и монеты?

    lastuniverse
    @lastuniverse
    kolomiec_artiom, а вообще, погуглите такое: "нахождение оптимального пути по графам"
    Можно найти много примеров, в том числе и программных реализаций.

    Так же скажу, что этот класс задач относятся к типу задач, не имеющих ограничения на максимально возможное время решения, вернее максимально возможное время решения у них ограниченно только временем перебора всех возможных вариантов. То есть при определенных стартовых условиях алгоритм будет искать оптимум очень долго, что видимо и произошло в вашем случае.
  • Какой алгоритм для решения задачи на динамическое программирование про лестницу и монеты?

    lastuniverse
    @lastuniverse
    kolomiec_artiom, при данной постановке он вообще не имеет выбора и всегда прыгает на 1
  • Какой алгоритм для решения задачи на динамическое программирование про лестницу и монеты?

    lastuniverse
    @lastuniverse
    Очень глупая постановка задачи!

    Просто перепрыгивая столбики с отрицательным количеством монет он наберет максимум.

    По моему в условии должно быть что то про ограничение количества ходов.
  • Почему программа вычисляет только один раз?

    lastuniverse
    @lastuniverse
    У вас, при единичном проходе цикла, вычисляется значение r=120.

    // начальные значения  
    P = 1;
    k = 2;
    f=1;
    i=1
    t=1;
    
    // далее цикл пока i<2*k+1=2*2+1=5
    // таким образом
    f = 1*5! = 1*120=120
    
    // далее цикл пока i<k-1=2-1=1
    // тоесть так как i = 1 вычисления в этом цикле не производятся
    // таким образом
    t=1;
    
    // далее получаем
    r = 120 / 1 = 120 // об этом вам написал  @myjcom.
    
    // ну а далее получаем завершение вычислений если r >= M
    // то есть если вы введете М меньше чем 120 то вы получите всего 1 цикл вычислений.

    Отсюда вопросы:
    1. Что именно вы пытаетесь посчитать?
    2. Какое значение М вы вводите, и почему считаете что при этом значении цикл do должен считаться более одного раза?
  • Почему программа вычисляет только один раз?

    lastuniverse
    @lastuniverse
    А почему вы считаете что она должна вычислять несколько раз?

    Вы даже код выложили с ошибкой (скобка лишняя), вы уверенны что она у вас вообще считает?
  • Как получить дробное число при делении 1 на 1?

    lastuniverse
    @lastuniverse
    Денис Кузнецов, cout умный оператор, ему надо явно задать тип вывода.

    гуглите это:
    std::fixed
    std::cout.precision()
    std::setprecision(10)
  • Как разобрать массив JSON без запятых?

    lastuniverse
    @lastuniverse
    Newmo, как намекнул Алексей Ярков, самым верным способом решить вашу проблему будет именно правка серверной части, отдающей данные.
  • Как разобрать массив JSON без запятых?

    lastuniverse
    @lastuniverse
    Newmo, с телефона писал. Сейчас до берусь до компа, гляну

    В первом варианте замените
    text.replace(/\}\s+\{/g, "},{")+

    На

    text.replace(/\}\s*\{/g, "},{")+
  • Как скрыть конфиги в js веб-приложении?

    lastuniverse
    @lastuniverse
    Pavel Shvedov, это то да, но согласитесь, что возможность выполнить не понятный код и возможность его модифицировать добиваясь определенного результата это не одно и тоже?
  • Как скрыть конфиги в js веб-приложении?

    lastuniverse
    @lastuniverse
    Антон Спирин, почемуже. Ведь есть различные виды запутывания. Можно например разработать свой иетерпритатор по типу брайнфака, написать весь клиент на нем, в добавок вместо json также придумать свой собственный формат данных с зубрдробительной логикой, а библиотеки работающие с этими данными также написать на вышеизобретенном интерпретаторе. Конечно любой сможет посмотреть как код так и данные, но будет иметь проблемы с пониманием)))

    PS: это я так шучу))))
  • Как вычислить интервал для дат средних значений?

    lastuniverse
    @lastuniverse
    sl0, а если:
    - у него исходные данные с рваным шагом (то раз в пару миллисекунд, то замрет на 50 мс) ????
    - для конкретного значение времени вообще нет данных?
    - или для таймстампа 12 задано несколько ключей со значениями более 10 а для 22 один со значением 0 а вычислить надо значение для 21 (по вашему методу среднее будет около 10 а должно быть близким к нулю)
  • Возможно ли Nginx для контроля раздачи файлов?

    lastuniverse
    @lastuniverse
    Чтобы не заниматься телепатией ответьте на ряд вопросов:
    1. что за се6рвер раздает файлы (http, ftp)
    2. с помощью какого модуля (фреймворка) вы подняли даздающий сервер (express, http, чтото еще)
    3. используются ли сертификаты (ssl, tls...) и как они подключены (к серверу на ноде, к нгинксу)
    4. что говорят сервера (логи раздающего сервера и нгинкса) при зависании закачки сайта?
    5. ну и посмотреть бы код раздающего сервера.
  • Canvas: как задать font, а затем изменить размер?

    lastuniverse
    @lastuniverse
    Ragtime_Kitty, нашел. По сути об этом и говорится в том куске английского текста что дал выше. Вот его гуглперевод:
    Когда элемент canvas создается, а затем всякий раз, когда устанавливаются атрибуты width и height (либо на новое значение, либо на предыдущее значение), растровое изображение и любые связанные с ним контексты должны быть очищены обратно в свое исходное состояние и повторно инициализированы с помощью вновь указанного размеры координатного пространства

    То есть при установке размеров происходит полная переинициализация канваса и отчистка всех связанных с ним контекстов.
  • Canvas: как задать font, а затем изменить размер?

    lastuniverse
    @lastuniverse
    Ragtime_Kitty, по факту да, но документальное подтверждение в спецификациях пока не нагуглил. Как найду, дам ссылку.

    Чтобы понять почему реализовали именно так, надо быть нкмного программистом, и желательно попробовать написать класс представляющмй линейную память в виде произвольного двухмерного массива. Тогда будет очевидно, что любое изменение размеров этого 2х мерного массива приводит к перевыделению памяти, проще и бысрее перевыделить память чем правильно перенести данные из старого массива в новый, линейное копирование тут не катит, ведь данные в 2хмерном массиве картинке связанны между собой не только по горизонтальной оси но и по вертикальной. С другой стороны алгоритм такого переноса совсем не сложен и легко реализуем, так же метаданные о шрифтах, цветах и прочем вообще не привязанны к размеру и вполне могли бы переноситься. Почему при разработке спецификации этого не слелали можно только гадать. Видимо потому, что в условиях переинициализации канваса посчитали данныйфункционал избыточным
  • Canvas: как задать font, а затем изменить размер?

    lastuniverse
    @lastuniverse
    Ragtime_Kitty, в ответе по сылке пишут:

    When the canvas element is created, and subsequently whenever the width and height attributes are set (whether to a new value or to the previous value), the bitmap and any associated contexts must be cleared back to their initial state and reinitialized with the newly specified coordinate space dimensions.

    Подозреваю, что сохраненные состояния тоже сбрасываются вместе с остальными параметрами