Back to challenges
Medium 0 solved 0% acceptance

Number Spiral Lookup

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

What you'll learn

  • Find a formula in a number pattern
  • Split the problem by layer and parity
  • Use 64-bit integers for large values

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.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

The spiral is built in square layers, so a cell belongs to a layer determined by the larger coordinate.

Hint 2

Use the parity of that layer to decide whether values increase along a row or a column.

Hint 3

Pay attention to whether the layer reaches from the top-left corner or the opposite corner first.

Expected complexity

O(1) time, O(1) extra space

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.