找到圣诞树周长上唯一点间距的算法

时间:2016-11-20 14:06:14

标签: python c++ algorithm

我想到了一个算法,并且想把它放在C ++中,如果不是,那么在Python中。它需要用户输入三个变量,圆的直径,他们想要在该圆的周长上的唯一点的数量,以及他们想要查看的圆的多少。最后我想让它变得更复杂并且随着我们向上行进而减少宽度,因为所有的圣诞树都是多层的(虽然我从顶部开始然后往下走,因为顶部的旅行路径比但是这需要更多的思考,而不是我现在可以给予的。一个例子和公式如下。

示例:

如果我有一棵直径为8英尺的圣诞树,那么有4个独特的彩色饰物可以悬挂,只有2/3的树正在展示(因为它在房子的角落里),是什么每件饰品之间的长度相等?

初始间距S为4.2英尺

S1 = 1.05英尺

S2 = .2 ft



**Variable Explanation                                          User Input**

Pi  The number Pi                                                           N
D   Diameter                                                                Y
C   Number of colors (or number of unique points you want on the circle)    Y
X   0-1; how much of the tree or circle will be viewed (two decimals)       Y

S =(X pi D)/ C

S1  S/C 
S2  S1/C    

广义公式

SN  SN-1/C  

问题:循环算法的代码是什么?

找到答案的最佳方法似乎是让用户输入X,D和C等于S.但是你怎么写S1 = S / C,S2 = S1 / C,依此类推?

1 个答案:

答案 0 :(得分:0)

让我们调用直径d,半径r = d / 2,可见部分p的比例和饰品n的数量。例如。 p = 0.5表示树的一半可见。

首先,我们需要实际可见的弧的长度:

l = PI * d * p

现在我们需要计算每个装饰品之间的空间:

s = l / (n - 1)

第一个饰品将放在0,最后一个放在l,其余的放在中间。

现在是第二部分:
在整棵树上计算:
我们假设您想要以高度为h的距离放置饰品,整个树高为H

摆放饰物的弧的长度可以计算为

d(h) = (d / H) * h

E.g。在H = 6d = 2的高度3处,我们将获得d(3) = 1

把它们放在一起,我们得到了从高度到饰物之间距离的功能:

s(h) = PI * (d / H) * h * p / (n - 1)

只需在您想要放置饰品的高度上循环就可以了。