Joa*_*nge 1 language-agnostic math collections code-formatting series
我在一个集合中有N个项目,我从1开始分配值,在列表的"中心"下降到0,然后线性地返回到1.
所以如果你有5件物品:
0 1 2 3 4
1 0.5 0 0.5 1
Run Code Online (Sandbox Code Playgroud)
对于6个项目,中心的2个项目将具有相同的值0.
0 1 2 3 4 5
1 0.5 0 0 0.5 1
Run Code Online (Sandbox Code Playgroud)
现在我有一堆if语句检查index
,然后决定该值是否应该从1上升或下降.但它似乎太乱了.
是否有一种优雅的方式来创建这样一系列数字(特别是如果可能的话,没有if语句)?
如果N >= 3
是奇数,那么
f(x) = fabs(2*x-N+1)/(N-1)
Run Code Online (Sandbox Code Playgroud)
如果N >= 4
是偶数,那么
f(x) = (fabs(2*x-N+1) - 1)/(N-2)
Run Code Online (Sandbox Code Playgroud)
要完全摆脱if语句,可以将其写为
f(x) = (fabs(2*x-N+1) + (N%2) - 1)/(N-2 + (N%2))
Run Code Online (Sandbox Code Playgroud)
适用于偶数和奇数值N >= 3
.