Todos os desafios
Médio 0 resolvidos 0% de aceitação

Consulta em Espiral Numérica

Encontre um valor pela linha e coluna em uma espiral numérica expansiva.

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  13

Retorne 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

Exemplo 1
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.

Exemplo 2
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.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.