Inspirado por isso
No desafio vinculado, somos solicitados a aplicar adição aos elementos do original e o inverso da matriz de entrada. Neste desafio, tornaremos um pouco mais difícil, apresentando as outras operações matemáticas básicas.
Dada uma matriz de números inteiros, percorra +, *, -, //, %, ^
, onde //
é a divisão inteira e ^
é expoente, enquanto a aplica no reverso da matriz. Ou, em outras palavras, aplique uma das funções acima a cada elemento de uma matriz, com o segundo argumento sendo o inverso da matriz, com a função aplicada percorrendo a lista acima. Isso ainda pode ser confuso, então vamos trabalhar com um exemplo.
Input: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Reverse: [9, 8, 7, 6, 5, 4, 3, 2, 1]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9]
Operand: + * - / % ^ + * -
[ 9, 8, 7, 6, 5, 4, 3, 2, 1]
Result: [10, 16, -4, 0, 0, 1296, 10, 16, 8]
então a saída para [1, 2, 3, 4, 5, 6, 7, 8, 9]
seria[10, 16, -4, 0, 0, 1296, 10, 16, 8]
Para cobrir os casos de canto, a entrada nunca conterá um 0, mas pode conter qualquer outro número inteiro no intervalo de infinito negativo a infinito positivo. Você pode receber a entrada como uma lista de cadeias que representam dígitos, se desejar.
Casos de teste
input => output
[1, 2, 3, 4, 5, 6, 7, 8, 9] => [10, 16, -4, 0, 0, 1296, 10, 16, 8]
[5, 3, 6, 1, 1] => [6, 3, 0, 0, 1]
[2, 1, 8] => [10, 1, 6]
[11, 4, -17, 15, 2, 361, 5, 28] => [39, 20, -378, 7, 2, 3.32948887119979e-44, 9, 308]
Este é um código-golfe, pelo que o código mais curto (em bytes) vence!