Here’s a solution I came up with, which should generalize for any condition and 
for arrays with dimensions >= 1 by 1. I’m not sure if there’s a Swiftier™ way 
to iterate over 2D arrays; if there is I’d like to hear it!

// Find the index of the first row in table in the column specified where the 
condition is true
func firstRow(table: [[Int]], forColumn column: Int, where predicate: (Int) -> 
Bool) -> Int {
        for row in 0..<table.count {
                if predicate(table[row][column]) {
                        return row
                }
        }
        return -1
}

// Find the index of the first column in table in the row specified where the 
condition is true
func firstColumn(table: [[Int]], forRow row: Int, where predicate: (Int) -> 
Bool) -> Int {
        for column in 0..<table[row].count {
                if predicate(table[row][column]) {
                        return column
                }
        }
        return -1
}

let input1 = 0 // Your user input here
let input2 = 0 // Your user input here
let table1 = [[1, 2], [3, 4]] // Your Table 1 here
let table2 = [[5, 6], [7, 8]] // Your Table 2 here

let row1 = firstRow(table: table1, forColumn: 0, where: { $0 >= input1 })
let column1 = firstColumn(table: table1, forRow: 0, where: { $0 >= input1 })
let value1 = table1[row1][column1]

let row2 = firstRow(table: table2, forColumn: 0, where: { $0 >= input2 })
let column2 = firstColumn(table: table2, forRow: row2, where: { $0 > input2 })
let value2 = table2[row2][column2]

Hope this helps,
Saagar Jha



> On Nov 26, 2016, at 12:33, Paul via swift-users <swift-users@swift.org> wrote:
> 
> Hi
> 
> I am almost a complete noob to Swift and I am writing my first app.
> 
> I need to read a value from a table and return that to the app to do a few 
> calculations but I am so new I have no idea what is the best method to do 
> this.
> 
> Specifically there are two tables (currently in microsoft excel) that i need 
> to “read” and get a value from . The values in these tables never change so I 
> can convert them into an array or other data structure that would make sense 
> in Swift.
> 
> The first table is about 25 x 25 (rows and columns).
> 
> I need to read down the first column (A) to find the value that is equal to 
> or the next larger value from what the user had input, and then I read across 
> the first row (1) to find the value that is equal to or the next larger 
> value. The cell where the row and column intersect contains a value and I 
> want to extract that value and use it in a few calculations.
> 
> Can anyone help point me in a direction to get started with that?
> 
> The second table is 20 X 13 (rows v columns).
> 
> Similar to the first table, I need to read down the first column (A) to find 
> the value that is equal to or the next larger value from what the user had 
> input…unlike the first table, now I have to read across that specified row to 
> find a cell value that is equal to or the next larger value to what the user 
> input, and then read up to the column to the top row and read the value from 
> the cell in row (0)
> 
> Again, I would appreciate any help about how to accomplish this.
> 
> 
> Thanks in advance
> 
> 
> Paul
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to