Problema
Ver original (inglês)A espiral infinita começa na célula do canto superior esquerdo. As quatro primeiras linhas e colunas estão mostradas abaixo. Continue o mesmo padrão em camadas quadradas expansivas. As coordenadas começam em 1.
1 2 9 10
4 3 8 11
5 6 7 12
16 15 14 13Retorne o valor de uma célula sem construir toda a grade.
Implemente number_spiral(row, column).
Entrada
row: A linha contada de cima para baixo, começando em 1.
column: A coluna contada da esquerda para a direita, começando em 1.
Saída
Retorne o número nessa posição.
Restrições
1 ≤ row, column ≤ 1.000.000.000. O valor cabe em um inteiro assinado de 64 bits.
Exemplos
Entrada:
row = 3
column = 2
Saída esperada:
expected = 6
Entrada:
long long row = 3;
long long column = 2;
Saída esperada:
long long expected = 6;
Entrada:
long row = 3;
long column = 2;
Saída esperada:
long expected = 6;
Explicação
Na terceira linha exibida, o segundo valor é 6.
Entrada:
row = 1
column = 4
Saída esperada:
expected = 10
Entrada:
long long row = 1;
long long column = 4;
Saída esperada:
long long expected = 10;
Entrada:
long row = 1;
long column = 4;
Saída esperada:
long expected = 10;
Explicação
A quarta camada quadrada começa em 10 na linha superior.
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.