Мой код работает, но как мне заставить этот код работать в детерминированное время? - PullRequest
0 голосов
/ 14 ноября 2018

Проблема: учитывая 3 входа Bounce, высоту падения шара и высоту взгляда на шар.

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

def bouncingBall(h, bounce, window):
    BounceFactor = bounce
    BallDropHeight = h
    ViewerHeight = window
    BounceLeft = h
    BallSeenTimes = 1
    if bounce > 1 or bounce < 0 or window >= h or h ==0:

        return -1
    else:
        while (BounceLeft > ViewerHeight):
            BounceLeft = BounceLeft * BounceFactor
            if (BounceLeft > ViewerHeight):
                BallSeenTimes = BallSeenTimes + 2
            else:
                break
        return BallSeenTimes     

Я не ищу ответы кода, только направлениев котором мне нужно думать.В настоящее время я думаю, что если бы я мог как-то установить линейные отношения и создать функцию для «угадывания» проходов, это было бы быстрее.

1 Ответ

0 голосов
/ 14 ноября 2018

Не уверен, насколько это правильно. Но,

var heightDiff = (BallDropHeight - ViewerHeight); var reducedHeight = BallDropHeight *(1 - BounceFactor); var BallSeenTimes = ((heightDiff/reducedLength)*2)+1;

может на самом деле решить это. Вам просто нужно найти высоту, уменьшенную на каждый отскок. Затем, разделив разницу в высоте между зрителем и точкой падения шара с уменьшенной высотой, вы получите количество отскоков мяча от зрителя. После этого умножение на 2 для каждого отказов зритель увидит дважды. И добавление одного в первый раз падение.

В этом нет никакой петли. Таким образом, время, затрачиваемое на выполнение, будет небольшим. Надеюсь, это поможет.

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