Перейти к содержанию
    

Как бы сделать так же ?

Есть подпрограмма написанная давным давно и не мной.

На вход ей поступают два параметра START-END (к примеру 10-100, 100-1000, 500-5000 ...) эти параметры могут быть любыми целыми числами.

При каждом следующем вызове на выходе получаем промежуточное значение, тоже целое число которое больше предыдущего на некую величину (на картинке красная).

Можно ли на основании приведённых таблиц понять каким образом (по какой функции) вычисляется эта дельта.

Исходников нет. Дизассеблировать нет возможности.

Нужно написать что то своё что будет работать также, ну или очень похоже.

Пока только вижу что первое число равно примерно половине STARTа и дельта вдвое меньше него.

А дальше ...

post-40106-1352711035_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

муторно, но можно из прошивки выковырять.

приходилось ковырять прошивки из-за отсутствия исходников и документации на протоколы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имя функции ничего не подсказывает?

Что будет если задать диапазон отличный от декадного как у вас? 1-2, 1-1000, 10-20 например

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из таблицы как-то так видно , что если из 6-4=2 Из 9-6=3 из 11-9=2 ... из 423-396=27 ну и так далее....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из таблицы как-то так видно , что если из 6-4=2 Из 9-6=3 из 11-9=2 ... из 423-396=27 ну и так далее....

Так автор именно так и вычислил красные цифры, если вы не поняли :>

 

Более интересен вопрос как функция выбирает первое значение и количество шагов до максимума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если вы не поняли :>

Да не врубился, утро ....

как функция выбирает первое значение и количество шагов до максимума

ей поступают два параметра START-END.....
Очень похоже , что задается диапазон

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

Получается , что значения могут только расти. Может график по таблице нарисовать, у меня под рукой миллимитровки нет..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получается , что значения могут только расти. Может график по таблице нарисовать, у меня под рукой миллимитровки нет..

ну да, растут, от начала диапазона до конца. Практически с постоянным приращением. Как тут заметили, смахивает на Брезенхэма. Гораздо любопытнее как определяется первая точка ИЛИ количество шагов. Почему чтобы пройти от 10 до 100 надо 34 шага, а от 500 до 5000 - 49?

 

А миллиметровку заменил Excel уже с конца прошлого века примерно ;>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИЛИ количество шагов
так может оно и задаётся диапазоном т.е изначально известно

А миллиметровку заменил Excel уже с конца прошлого века примерно ;>

Не люблю я его с детства

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Додумывать - какой же там внутри алгоритм, есть дело неблагодарное. Два варианта - таки дизассемблировать, либо построить аппроксимацию.

Для аппроксимации стоит построить несколько графиков - число шагов от диапазона, число шагов от первого-последнего аргумента (если с последним аргументом более-менее ясно - это конец диапазона, то с первым непонятно - он не является началом диапазона), ну и собсетвнно графики значений.

 

PS и это не Брезенхем, во-первых рост нелинейный, во-вторых последняя дельта выбивается из ряда, Брезенхем такого себе не позволяет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

последняя дельта выбивается из ряда

Это может быть из-за того, что бы не выйти за диапазон при очередном приращении.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще заметил что нету ни одной дельты с нулевым значением в последнем разряде. (после 29 может быть 28,31 но не 30; 99 - 101; 109 -111).

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

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

Величина начального значения вполне может по таблице выбираться.

Параметр START может быть любым целым числом но в реальном изделии их не так уж и много.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...