A média dos antípodas
Neste desafio, você receberá um array e deverá obter outro menor seguindo três etapas:
- Divida o array em duas partes de mesmo tamanho. Se o array tiver um número ímpar de elementos, remova o número central para obter duas partes iguais.
- Some cada número da primeira parte ao número correspondente da segunda parte invertida para obter um novo array com o mesmo tamanho das duas partes anteriores.
- Divida por dois cada número do array final.
Dado um array de números inteiros arr, implemente uma função que retorne um novo array aplicando o algoritmo acima.
Exemplos
antipodesAverage([1, 2, 3, 4]) ➞ [2.5, 2.5]
// Parte esquerda = [1, 2]
// Parte direita invertida = [4, 3]
// Array resultante da soma de cada par = [5, 5]
// Cada número é dividido por dois = [2.5, 2.5]
antipodesAverage([1, 2, 3, 4, 5]) ➞ [3, 3]
// O array tem um número ímpar de elementos, portanto o número 3 (o elemento central) é removido
// Parte esquerda = [1, 2]
// Parte direita invertida = [5, 4]
// Soma = [6, 6]
// Divisão por dois = [3, 3]
antipodesAverage([-1, -2]) ➞ [-1.5]
// (-1 + -2) / 2 = [-1.5]Observações
- Cada array
arrfornecido terá pelo menos dois números. - Os números do array
arrsempre serão inteiros, positivos ou negativos, mas o array final também poderá conter números de ponto flutuante, positivos ou negativos (veja os exemplos #1 e #3). - Você pode implementar as três etapas separadamente ou combiná-las para obter o mesmo resultado.
Exemplo em Swift
antipodesAverage([1, 2, 3, 4]) // [2.5, 2.5]