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 arr fornecido terá pelo menos dois números.
  • Os números do array arr sempre 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]