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
  • 偏移量
    Y
    (从X到序列的第一个值所需的追赶量)
范例

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).