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 <[email protected]> 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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users