Là một theo dõi câu hỏi của tôi here, tôi đang cố gắng để thực hiện các chức năng PHP sau đây trong Objective-C, mà sẽ tạo ra một sản phẩm Descartes:Làm thế nào tôi có thể hoàn thành việc thực hiện Mục tiêu-C này của một chức năng của sản phẩm Descartes?
function array_cartesian_product($arrays)
{
$result = array();
$arrays = array_values($arrays);
$sizeIn = sizeof($arrays);
$size = $sizeIn > 0 ? 1 : 0;
foreach ($arrays as $array)
$size = $size * sizeof($array);
for ($i = 0; $i < $size; $i ++)
{
$result[$i] = array();
for ($j = 0; $j < $sizeIn; $j ++)
array_push($result[$i], current($arrays[$j]));
for ($j = ($sizeIn -1); $j >= 0; $j --)
{
if (next($arrays[$j]))
break;
elseif (isset ($arrays[$j]))
reset($arrays[$j]);
}
}
return $result;
}
Dưới đây là những gì tôi có cho đến nay:
-(NSArray *) array_cartesian_product:(NSArray *)arrays {
NSMutableArray *result = [[NSMutableArray alloc] init];
int sizeIn = [arrays count];
int size = (sizeIn > 0) ? 1 : 0;
for(id array in arrays)
size *= [array count];
for(int i = 0; i < size; i++) {
for (int j = 0; j < sizeIn; j++) {
[result insertObject:[arrays objectAtIndex:j] atIndex:i];
}
for (int j = (sizeIn - 1); j >= 0; j--) {
// ?????
}
}
return result;
}
Tôi bị lạc khi cố gắng mã tương đương với các hàm next
, current
và reset
của PHP, vì tôi không biết cách tham chiếu đến con trỏ nội bộ vào mảng.
Làm cách nào để triển khai khối mã cuối cùng và nhận hàm tương đương?
bạn đã xem xét sử dụng các đối tượng điều tra viên của mảng? –
Quá địa phương hóa? Tôi chắc rằng ai đó có thể sử dụng điều này xuống đường, và thêm một chức năng sản phẩm Descartes trong Objective-C vào knowledgebase sẽ không làm tổn thương ... – barfoon