수학에서는 주어진 관계의 유형 (선형, 2 차 등)이 차이를 계산하는 방법을 알아내는 한 가지 방법입니다. 그렇게하려면 대응하는 x 값 사이의 간격이 동일한 y 값 목록을 가져 와서 위의 숫자에서 각 값을 빼서 이전 목록보다 짧은 숫자 목록을 만듭니다. 결과 목록이 완전히 동일한 숫자로 구성된 경우 관계의 차이는 1입니다 (선형 임). 동일하지 않으면 새 목록에서 프로세스를 반복하십시오. 이제 동일하면 관계의 차이가 2입니다 (2 차). 이들이 동일하지 않은 경우,이 프로세스가 완료 될 때까지 계속 진행하십시오. 예를 들어, x 값을 점증 적으로 증가시키기 위해 y 값 [1,6,15,28,45,66]의 목록이있는 경우 :
First Differences:
1
6 1-6 =-5
15 6-15 =-9
28 15-28=-13
45 28-45=-17
66 45-66=-21
Second differences:
-5
-9 -5+9 =4
-13 -9+13 =4
-17 -13+17=4
-21 -17+21=4
As these results are identical, this relation has a difference of 2
당신의 작업 :
입력으로 정수 배열이 제공 될 때 위에서 설명한대로 배열에 설명 된 관계의 차이를 리턴하는 프로그램 또는 함수를 작성하십시오.
입력:
길이가 1보다 큰 정수 배열.
산출:
입력으로 설명 된 관계의 차이를 나타내는 정수입니다.
테스트 사례 :
Input => Output
[1,2,3,4,5,6,7,8,9,10] => 1
[1,4,9,16,25,36] => 2
[1,2,1] => 2 (when there is only one value left, all values are automatically identical, so the largest difference an array can have is equal to the length of the array-1)
"Hello World" => undefined behavior (invalid input)
[1,1,1,1,1,1,1,1,1] => 0 (all elements are already identical)
[1, 3, 9, 26, 66, 150, 313, 610] => 6
채점 :
이것은 code-golf 이며 각 언어에서 가장 낮은 점수 (바이트)가 해당 언어에서 이깁니다. 전반적으로 가장 낮은 점수는 녹색 확인 표시를 얻습니다.
[1,2,1]2를주지 말아야합니까 ? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]-> 원하는 6경우
