All challenges
Medium 0 solved 0% acceptance

Number Spiral Lookup

Find a value by row and column in an expanding number spiral.

Problem

The infinite spiral starts at the top-left cell. The first four rows and columns are shown below. Continue the same pattern in expanding square layers. Coordinates start at 1.

 1   2   9  10
 4   3   8  11
 5   6   7  12
16  15  14  13

Return one cell value without constructing the entire grid.

Implement number_spiral(row, column).

Input

row: The row counted from the top, starting at 1.

column: The column counted from the left, starting at 1.

Output

Return the number at that position.

Constraints

1 ≤ row, column ≤ 1,000,000,000. The value fits a signed 64-bit integer.

Examples

Example 1
Input:
row = 3
column = 2

Expected output:
expected = 6
Input:
long long row = 3;
long long column = 2;

Expected output:
long long expected = 6;
Input:
long row = 3;
long column = 2;

Expected output:
long expected = 6;

Explanation

In the displayed third row, the second value is 6.

Example 2
Input:
row = 1
column = 4

Expected output:
expected = 10
Input:
long long row = 1;
long long column = 4;

Expected output:
long long expected = 10;
Input:
long row = 1;
long column = 4;

Expected output:
long expected = 10;

Explanation

The fourth square layer begins at 10 in the top row.

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.