A média dos antípodas

Dado um vetor de números inteiros, crie antipodesAverage(const std::vector<int>&) e produza um vetor menor em três etapas:

  1. Divida o vetor em duas metades externas de mesmo tamanho. Se o comprimento for ímpar, descarte o elemento central para que as metades fiquem iguais.
  2. Inverta a segunda metade e some cada valor da primeira metade ao valor correspondente da segunda metade invertida.
  3. Divida por dois cada soma resultante.

Exemplos

antipodesAverage(std::vector<int>{1, 2, 3, 4}) ➞ std::vector<double>{2.5, 2.5}
// A parte esquerda [1, 2] é pareada com a parte direita invertida [4, 3]; as somas [5, 5] se tornam [2.5, 2.5].

antipodesAverage(std::vector<int>{1, 2, 3, 4, 5}) ➞ std::vector<double>{3, 3}
// Descarte o valor central 3. A parte esquerda [1, 2] é pareada com [5, 4]; as somas [6, 6] se tornam [3, 3].

antipodesAverage(std::vector<int>{-1, -2}) ➞ std::vector<double>{-1.5}
// (-1 + -2) / 2 = -1.5.

Observações

  • Cada entrada contém pelo menos dois números.
  • Os valores de entrada são números inteiros, positivos ou negativos, mas as médias retornadas podem ser valores de ponto flutuante.
  • As etapas podem ser implementadas separadamente ou combinadas sem alterar o resultado.