How to get row and column from index?

Viewed 31116

I'm drawing a HUGE blank here.

Everything I've found is about getting an index from a given row and column, but how do I get a row and a column from an index?

The row is easy: (int)(index / width).

My brain is suffering massive bleed trying to compute the column.

Shame on me.

4 Answers

Paxdiablo's answer is the right one. If someone needs the reverse process to get index from row and column:

index = (row * width) + column

Swift 4

typealias ColumnRowType = (column:Int, row:Int)

func indexToColumnRow(index:Int, columns:Int) -> ColumnRowType
{
    let columnIndex = (index % columns)
    let rowIndex = /*floor*/(index / columns)    // we just cast to an `Int`

    return ColumnRowType(columnIndex, rowIndex)
}

In java, with a column offset of 1, this is a way to do it

int offset=1;
column = Math.floorDiv(location-offset , 3)+offset;
row = ( (location-offset) %3 )+offset ;
Related