尝试在 Powershell 中完成笛卡尔积算法时,我变得非常困难。使用在stackoverflow上找到的其他公式,这就是我想出的:
clear
Function New-GenericDictionary([type] $keyType, [type]$valueType)
{
$base = [System.Collections.Generic.Dictionary``2]
$ct = $base.MakeGenericType(($keyType, $valueType))
New-Object $ct
}
$sets = New-GenericDictionary int string
$sets[0] = "1"
$sets[1] = "0,1"
$sets[2] = "0,1"
$iterations = 1
$stringCombo = ""
foreach($key in $sets.Keys) {
$pieces = $sets[$key].Split(",")
$iterations = $iterations * $pieces.Length
}
for ($i = 0; $i -lt $iterations; $i++) {
$stringCombo = ""
foreach($key in $sets.Keys) {
$pieces = $sets[$key].Split(",")
$val = $pieces.Length
$get = $i%$val
$stringCombo = $stringCombo + " " + $pieces[$get]
}
Write-Host $stringCombo.Trim()
}
#output hoped for:
#1 0 0
#1 0 1
#1 1 0
#1 1 1
#output is:
#1 0 0
#1 1 1
#1 0 0
#1 1 1
从代码片段底部的注释中可以看出,输出并没有完全产生预期的结果。迭代计数返回正确的值,但组合未正确完成。
在此代码段中 $sets[x] 是固定的,但在实际脚本中 $sets 字典项目是作为循环的一部分创建的,并且每次迭代可以包含 1 到多个项目。
有人可以提供第二双眼睛来告诉我我错过了什么吗?
谢谢