Powershell でデカルト積アルゴリズムを完成させようとして非常に行き詰まりました。ここでスタックオーバーフローにある他の数式を使用して、これが私が思いついたものです:
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 つから多くの項目を含めることができます。
誰かが私が見逃したものを見せてくれる別の目を提供してくれませんか?
ありがとう