作爲後續行動,我的問題here,我想實現在Objective-C以下PHP函數,這將產生一個笛卡爾乘積:如何完成此笛卡爾產品功能的Objective-C實現?
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;
}
這是我到目前爲止有:
-(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;
}
當我嘗試編碼相當於PHP的next
,current
和reset
函數時,我迷路了,因爲我不知道如何引用指向數組的內部指針。
如何實現最後一塊代碼並獲得等效函數?
你考慮使用數組的枚舉對象? –
太局部?我敢肯定有人可以使用它,並且在Objective-C中將知識庫中的笛卡爾產品功能添加到知識庫中不會造成傷害... – barfoon