Objective c 处理一系列值的算法
对于带有Objective c 处理一系列值的算法,objective-c,algorithm,math,time-series,Objective C,Algorithm,Math,Time Series,对于带有开始、增量和最大值的序列: START = 100 INCREMENT = 30 MAX = 315 e.g. 100, 130, 160, 190, 220, 250, 280, 310 给定任意数字X返回: 第一个值为>=X 偏移量Y(从X到序列的第一个值所需的追赶量) 范例 In: START = 100 INCREMENT = 30 MAX = 315 X = 210 Out: Y = 10 S = 220, 250, 280, 310 更新——来自MBo答案: fl
开始
、增量
和最大值
的序列:
START = 100
INCREMENT = 30
MAX = 315
e.g. 100, 130, 160, 190, 220, 250, 280, 310
给定任意数字X
返回:
- 第一个值为
>=X
- 偏移量
(从X到序列的第一个值所需的追赶量)李>Y
In:
START = 100
INCREMENT = 30
MAX = 315
X = 210
Out:
Y = 10
S = 220, 250, 280, 310
更新——来自MBo答案:
float max = 315.0;
float inc = 30.0;
float start = 100.0;
float x = 210.0;
float k0 = ceil( (x-start) / inc) ;
float k1 = floor( (max - start) / inc) ;
for (int i=k0; i<=k1; i++)
{
NSLog(@" output: %d: %f", i, start + i * inc);
}
output: 4: 220.000000
output: 5: 250.000000
output: 6: 280.000000
output: 7: 310.000000
float max=315.0;
浮点数=30.0;
浮动启动=100.0;
浮动x=210.0;
浮动k0=ceil((x-start)/inc);
浮动k1=地板((最大-开始)/inc);
对于(int i=k0;i学校数学:
Start + k0 * Inc >= X
k0 * Inc >= X - Start
k0 >= (X - Start) / Inc
编程数学:
k0 = Ceil(1.0 * (X - Start) / Inc)
k1 = Floor(1.0 * (Max - Start) / Inc)
for i = k0 to k1 (including both ends)
output Start + i * Inc
整数数学:
k0 = (X - Start + Inc - 1) / Inc //such integer division makes ceiling
k1 = (Max - Start) / Inc //integer division makes flooring
for i = k0 to k1 (including both ends)
output Start + i * Inc
例如:
START = 100
INCREMENT = 30
MAX = 315
X = 210
k0 = Ceil((210 - 100) / 30) = Ceil(3.7) = 4
k1 = Floor((315 - 100) / 30) = Floor(7.2) = 7
first 100 + 4 * 30 = 220
last 100 + 7 * 30 = 310
解不等式
X <= S + K.I <= M
请注意,可能有K0>K1
,但没有解决方案。为什么-1?不是一个结构良好的问题?我问这个问题是因为我不想在将来被叮咬。可能会假设-因为没有显示自己的努力,我将其应用于我的示例1和以下值输出:3:190输出:4:220输出:5:250 o输出:6:280也许您更改了ceil和floor操作。请参见示例我更新了我的问题,您可以看看我使用的代码吗?这两个表达式都应使用浮点除法1.0*(x-start)/inc或(float)(x-start)计算/inc-不知道objective-c语法。-第二个表达式的1-off是由于I,我添加了纯整数算术
K0 = Ceil((X - S) / I) <= K <= Floor((M - S) / I) = K1
Y = X - (S + K0.I).