/**
 * Creates nested tuples using the tuple() function.
 *
 * @param numRows An integer representing the number of rows in the nested tuples.
 * @param numCols An integer representing the number of columns in the nested tuples.
 * @return A nested tuple with numRows rows and numCols columns, where each element is a tuple of its row and column indices.
 *
 * Example:
 * createNestedTuples(3, 4) returns (((), (), (), ()), ((), (), (), ()), ((), (), (), ()))
 */
fun createNestedTuples(numRows: Int, numCols: Int): List<List<Pair<Int, Int>>> {

    return List(numRows) { i ->
        List(numCols) { j ->
            Pair(i, j)
        }
    }
}
/**
 * Creates nested tuples using the tuple() function.
 *
 * @param numRows An integer representing the number of rows in the nested tuples.
 * @param numCols An integer representing the number of columns in the nested tuples.
 * @return A nested tuple with numRows rows and numCols columns, where each element is a tuple of its row and column indices.
 *
 * Example:
 * createNestedTuples(3, 4) returns (((), (), (), ()), ((), (), (), ()), ((), (), (), ()))
 */
fun createNestedTuples(numRows: Int, numCols: Int): List<List<Pair<Int, Int>>> {
/**
 * Creates nested tuples using the tuple() function.
 *
 * @param numRows An integer representing the number of rows in the nested tuples.
 * @param numCols An integer representing the number of columns in the nested tuples.
 * @return A nested tuple with numRows rows and numCols columns, where each element is a tuple of its row and column indices.
 *
 * Example:
 * createNestedTuples(3, 4) returns (((), (), (), ()), ((), (), (), ()), ((), (), (), ()))
 */
fun createNestedTuples(numRows: Int, numCols: Int): List<List<Pair<Int, Int>>> {

    return List(numRows) { i ->
        List(numCols) { j ->
            Pair(i, j)
        }
    }
}