Как рассчитать шаги, необходимые для стрелки, чтобы заполнить все заданные сектора часов? - PullRequest
1 голос
/ 16 апреля 2020

данные проблемы: Аналоговые часы делятся на 512 четных секций, стрелка / ручка начинает свое движение с 0 °, а каждый такт / шаг перемещает их на 4.01 °. Стрелка / Ручка может двигаться только по часовой стрелке. Какое минимальное количество тактов / шагов необходимо для того, чтобы стрелка / дескриптор посетила все разделы часов.

Я пытаюсь написать формулу для вычисления количества, но не могу полностью обернуть его вокруг. Возможно ли это сделать? Если да, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Этот сайт для программистов, не так ли?
Таким образом, мы можем нанять нашего кремниевого друга, чтобы он работал у нас;)

Полный круг составляет 360*60*60*4=5184000 единиц (единица составляет четверть angular секунда)
Один шаг равен 4*(4*3600+36) = 57744 единицам
Один раздел равен 4*360*3600/512 = 10125 единицам (мы используем четверти, чтобы сделать это значение целым)

cntr = set()
an = 0
step = 57744
div = 10125
mod = 5184000
c = 0
while len(cntr) < 512:
    sec = (an % mod) // div
    cntr.add(sec)
    an += step
    c += 1
print(c)

>>804
0 голосов
/ 16 апреля 2020

к сожалению, я не могу полностью ответить на ваш вопрос, но может помочь следующее:

Разделение 512 разделов на степени дает вам 1,4222 ° каждый. В каждом раунде вы проходите 90 различных сечений, когда начинаете с 0 ° -3,11 ° до 89 °, когда начинаете с 3,12 ° -4,00 °

. Для начала раундов это дает вам изменение стартовой степени на 0,9 ° каждый раунд, кроме после четвертого, где оно составляет всего 0,89 ° (в пределах возможного диапазона 0 ° -4 °, поэтому все рассчитанные по модулю 4).

Таким образом, у вас есть 0,9 ° -> 1,8 ° -> 2,7 ° -> 3,6 ° -> 0,49-> 1,39 ° ... 0,08 ° ...

Надеюсь, это поможет вам разработать алгоритм

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...