1
제외한 모든 입력에 대해 잘 작동하는 다음 PowerShell 함수가 있습니다. 1
입력을 전달하면 두 요소가 (1,1)
인 배열 인 단일 요소 대신 1,1
이라는 두 요소가있는 배열이 반환됩니다.지그재그 PowerShell 배열 하나의 요소가있을 때 차원을 잃고있다
어떻게하면 PowerShell 자체 배열로 하나의 요소로 들쭉날쭉 한 배열을 반환 할 수있는 아이디어가 있습니까?
function getFactorPairs {
param($n)
$factorPairs = @()
$maxDiv = [math]::sqrt($n)
write-verbose "Max Divisor: $maxDiv"
for($c = 1; $c -le $maxDiv; $C++) {
$o = $n/$c;
if($o -eq [math]::floor($o)) {
write-debug "Factor Pair: $c, $o"
$factorPairs += ,@($c,$o) # comma tells powershell to add defined array as element in existing array instead of adding array elements to existing array
}
}
return $factorPairs
}
다음은 테스트 결과이며 문제를 보여주는 결과입니다. 하나의 요소 쌍만이 발견 되더라도 첫 번째 예제 (입력으로 1)가 길이 2를 반환한다는 것을 알 수 있습니다. 두 번째 예제 (입력으로 6)가 제대로 작동하고 두 개의 요소 쌍이있는 길이 2가 반환됩니다.
~» (getFactorPairs 1).length
DEBUG: Factor Pair: 1, 1
2
~» (getFactorPairs 6).length
DEBUG: Factor Pair: 1, 6
DEBUG: Factor Pair: 2, 3
2
멋진 워크 랩과 훌륭한 링크로, PowerShell v3에서 버그가 수정 된 것 같습니다 (https://connect.microsoft.com/feedback/ViewFeedback.aspx?Feedback=281908&SiteID=99). –