1

컬렉션에 N 개의 항목이 있고 목록의 "가운데"에서 0으로 내려가는 값을 할당하고 1까지 선형으로 돌아갑니다. 당신이 5 개 항목이있는 경우이 일련의 숫자를 만드는 가장 우아한 방법은 무엇입니까?

그래서 : 지금 같은 값 0

0 1 2 3 4 5 
1 0.5 0 0 0.5 1 

있을 것

0 1 2 3 4 
1 0.5 0 0.5 1 

6 항목, 중앙에 2 개 항목을 나는 if 문의 무리가 index을 확인한 다음 값이 1에서 올라가거나 내려 가야하는지 결정합니다. 그러나 너무 지저분 해 보입니다.

이러한 일련의 숫자를 만들 수있는 우아한 방법이 있습니까? (가능한 경우 if 문을 사용하지 않는 경우)? 만약 N >= 3

답변

5

N >= 4 당신은

f(x) = (fabs(2*x-N+1) + (N%2) - 1)/(N-2 + (N%2)) 
으로 이것을 쓸 수

f(x) = (fabs(2*x-N+1) - 1)/(N-2) 

이 경우 명령문의 완전히 제거하는 다음, 짝수

f(x) = fabs(2*x-N+1)/(N-1) 

경우, 홀수

은 짝수 및 홀수 값인 N >= 3에 대해 작동합니다.

+0

고마워요, 당신은 천재예요. –

관련 문제