Я моделирую повторные нажатия кнопки для постепенной игры. Там будут кнопки для повторного нажима. Эти кнопки имеют:
[*] переменные нажатия/секунды, или скорости. (Не то же самое, что напрямую умножение значения нажатия/секунья). Игра вычисляется в дискретных частях (тикания). Мне нужно точно определить, когда во время тика ограничение скорости сначала сломано, поэтому я могу точно применять восстановления (ограничение скорости сломано -> перегрев и сбросить талли -> перезарядки, промыть и повторить). < /P>
Подробности: < /h4>
(1000/pressespersec), то есть миллисекунд на пресс. 4 ПРЕСС/SEC будут выравнивать нажатие на временные метки % 250 = 0, например, … 9750, 10000, 10250, 10500,…. Я храню группы повторяющихся прессов в качестве объектов прессы (
Код: Выделить всё
pressObjКаждая кнопка имеет несколько нажатых объектов. Эта проблема имеет дело с одной кнопкой за раз. Я намерен для прессы/сек, временного времени перезарядного города и т. Д., Будучи до крайности (10^1000 и 10^-1000, спасибо break_infinity.js).
Задача:
Я уменьшил это до: Найти наименьшее время x, где f (x) = sum of-функции>. Каждая историческая группа прессов, определяемая PressObj , фактически является кусочной функцией, содержащей операции ceil () . Когда несколько PressObj s (на одной и той же кнопке) достаточно близко, чтобы нажимать «перекрытие» при подсчете исторических нажиманий/во -вторых, мне нужно найти, когда их нажатия/SEC SUM сначала превышает ограничение скорости.
Пример:
кнопка обновляется с 10 нажимающих нажатий/секунды. Кнопка имеет нажатие/нажатие множителя = 2 и ограничение скорости = 25 нажатия/сек. Исторические группы прессов (
Код: Выделить всё
pressObjТам будет какое -то неравномерное поведение к запущенным нажатиям/секунду при переходах 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]
Мобильная версия