Поиск первой метки времени, где сумма потолочных функций превышает порогJavascript

Форум по Javascript
Ответить
Anonymous
 Поиск первой метки времени, где сумма потолочных функций превышает порог

Сообщение Anonymous »

Контекст: < /h3>
Я моделирую повторные нажатия кнопки для постепенной игры. Там будут кнопки для повторного нажима. Эти кнопки имеют:

[*] переменные нажатия/секунды, или скорости. (Не то же самое, что напрямую умножение значения нажатия/секунья). Игра вычисляется в дискретных частях (тикания). Мне нужно точно определить, когда во время тика ограничение скорости сначала сломано, поэтому я могу точно применять восстановления (ограничение скорости сломано -> перегрев и сбросить талли -> перезарядки, промыть и повторить). < /P>
Подробности: < /h4>
(1000/pressespersec), то есть миллисекунд на пресс. 4 ПРЕСС/SEC будут выравнивать нажатие на временные метки % 250 = 0, например, … 9750, 10000, 10250, 10500,…. Я храню группы повторяющихся прессов в качестве объектов прессы (

Код: Выделить всё

pressObj
s), содержащая запуска нажатия временной метки, нажатие временной метки и скорость нажатия/с. Это более эффективно, чем создание объекта для каждого пресса. Когда один нажащий объект остановится, другой последует, возобновите историю прессы. Когда производятся обновления, нажмите объекты после обновления, содержащие новое значение (ы). < /P>
Каждая кнопка имеет несколько нажатых объектов. Эта проблема имеет дело с одной кнопкой за раз. Я намерен для прессы/сек, временного времени перезарядного города и т. Д., Будучи до крайности (10^1000 и 10^-1000, спасибо break_infinity.js).
Задача:
Я уменьшил это до: Найти наименьшее время x, где f (x) = sum of-функции>. Каждая историческая группа прессов, определяемая PressObj , фактически является кусочной функцией, содержащей операции ceil () . Когда несколько PressObj s (на одной и той же кнопке) достаточно близко, чтобы нажимать «перекрытие» при подсчете исторических нажиманий/во -вторых, мне нужно найти, когда их нажатия/SEC SUM сначала превышает ограничение скорости.
Пример:
кнопка обновляется с 10 нажимающих нажатий/секунды. Кнопка имеет нажатие/нажатие множителя = 2 и ограничение скорости = 25 нажатия/сек. Исторические группы прессов (

Код: Выделить всё

pressObj
s) создаются (для этой кнопки) каждые 210 мс, начиная с TimeStamp 2500. Всего 12 нажатых объектов: первые шесть выполняют 10 нажатий/сек, вторые шесть выполняют 14 нажатий/сек.
Там будет какое -то неравномерное поведение к запущенным нажатиям/секунду при переходах IT. Он пересечет 25 нажатий/секундный ограничение скорости несколько раз. Эта визуализация Desmos показывает, что предел сначала нарушается вокруг TimeStamp 4285.71429. Вероятно, приближает ≈ 30 000/7. src = "https://i.sstatic.net/h3xy8v9o.png"/>
В этом примере, потому что ограничение нарушено на девятом объекте прессы, последние три прессы не будут созданы во время прогона программы, если не скрыто не было крошечным. Объект Эффективно создает кусочную функцию, основанную на четырех точках останова, где он меняет свое влияние на исторические беговые прессы/секунду:

Нажапиющие старты - увеличение бега,
Нажатия или истекающие (поступают в секунду). /> Прессы прекратились, и последние прессы начинают истекать - уменьшение бега, < /li>
Последнее пресс истек - Tally вернулся к 0. < /li>
< /ol>
Псевдокод для построения кусочно -функции из повторяемого прессы: < /p>

Код: Выделить всё

tsStartPressing = pressObj.startPressingTimestamp
tsStopPressing = pressObj.stopPressingTimestamp
ppMs = pressObj.pressesPerSecond / 1000
mspp = 1 / ppMs
pressMul = pressObj.pressMul

// The four breakpoints
tsStartPressing     // defined above
tsPlateau = min( tsStopPressing, tsStartPressing + 1000 )
tsStartDecrease = max( tsStopPressing, tsStartPressing + 1000 )
tsEnd = tsStopPressing + 1000

// The first performed press is aligned to the next timestamp divisible by milliseconds/press
tsAlignedFirstPress = ceil(tsStartPressing / mspp) * mspp

plateauTally = ceil((tsPlateau - tsAlignedFirstPress) * ppMs) * pressMul

// Breakpoints 1-2: Increment -- presses 'ramp up'
F_inc(t) = ceil((t - tsAlignedFirstPress) * ppMs) * pressMul

// Breakpoints 2-3: Plateau -- presses stop, or expire at the same rate they are pressed
F_plateau(t) = plateauTally

// Breakpoints 3-4: Decrement -- presses 'ramp down' as no more occur and they expire
F_dec(t) = plateauTally - ceil((t - (tsStartDecrease - tsStartPressing) - tsAlignedFirstPress) * ppMs) * pressMul

// Piecewise:
F(t) = {
F_inc(t)      |  tsStartPressing 

Подробнее здесь: [url]https://stackoverflow.com/questions/79719198/finding-the-first-timestamp-where-sum-of-ceiling-functions-exceeds-a-threshold[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»