Em matemática, uma maneira de descobrir qual é o tipo de uma determinada relação (linear, quadrática etc.) para calcular as diferenças. Para fazer isso, você pega uma lista de valores y para os quais a diferença entre os valores correspondentes x é a mesma e subtrai cada um do número acima, criando uma lista de números um menor que a lista anterior. Se a lista resultante for completamente composta por números idênticos, a relação terá uma diferença de 1 (é linear). Se eles não forem idênticos, repita o processo na nova lista. Se eles agora são idênticos, a relação tem uma diferença de 2 (é quadrática). Se eles não forem idênticos, você simplesmente continua esse processo até que sejam. Por exemplo, se você tiver a lista de valores y [1,6,15,28,45,66] para aumentar incrementalmente os valores x:
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
Sua tarefa:
Escreva um programa ou função que, ao receber uma matriz de números inteiros como entrada, retorne a diferença da relação descrita pela matriz, conforme explicado acima.
Entrada:
Uma matriz de números inteiros, que pode ter qualquer tamanho> 1.
Saída:
Um número inteiro que representa a diferença da relação descrita pela entrada.
Casos de teste:
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
Pontuação:
Isso é código-golfe , a menor pontuação em bytes em cada idioma ganha para esse idioma. A pontuação mais baixa geral recebe a marca de seleção verde.
[1,2,1]
dar 2? [1,2,1] -> [1,-1] -> [-2]
[1,3,9,26,66,150,313,610]
-> 6
se desejar