Corrija o código: sem modificar um array
Implemente uma transformação que diminua os valores em camadas concêntricas. Para cada camada de 1 até times, diminua cada valor cujo índice seja maior ou igual a essa camada e menor que o tamanho do array menos essa camada.
int[] x = new[] { 3, 3, 3, 3, 3, 3, 3 };
Program.Change(x, 0); // new[] { 3, 3, 3, 3, 3, 3, 3 }
Program.Change(x, 1); // new[] { 3, 2, 2, 2, 2, 2, 3 }
Program.Change(x, 2); // new[] { 3, 2, 1, 1, 1, 2, 3 }
Program.Change(x, 3); // new[] { 3, 2, 1, 0, 1, 2, 3 }A função deve retornar o resultado transformado sem modificar a entrada original. Portanto, chamá-la várias vezes com a mesma entrada deve sempre retornar o mesmo resultado, e o x original deve permanecer inalterado.
Chamadas repetidas esperadas
Program.Change(x, 2); // new[] { 3, 2, 1, 1, 1, 2, 3 }
Program.Change(x, 2); // new[] { 3, 2, 1, 1, 1, 2, 3 }Notas
- O array de entrada deve permanecer inalterado após cada chamada.
- Dica: faça uma cópia da entrada antes de aplicar os decrementos.
- Esta transformação faz parte de uma solução para o problema Tapete concêntrico.