Tôi có chức năng PowerShell sau hoạt động tốt cho mọi đầu vào ngoại trừ 1
. Nếu tôi vượt qua nó một đầu vào của 1
nó sẽ trả về một mảng với hai yếu tố 1,1
thay vì một phần tử duy nhất mà chính nó là một mảng của hai yếu tố (1,1)
.Mảng chữ cái bị lởm chởm bị mất kích thước khi chỉ có một phần tử tồn tại
Bất kỳ ý tưởng nào về cách tôi có thể làm cho PowerShell trả về một mảng có răng cưa với một phần tử tự nó là một mảng?
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
}
Đây là thử nghiệm của tôi và đầu ra của nó hiển thị sự cố. Bạn có thể thấy ví dụ đầu tiên (1 là đầu vào) đang trả về độ dài là 2 mặc dù chỉ có một cặp yếu tố được tìm thấy. Ví dụ thứ hai (6 là đầu vào) đang hoạt động đúng và đang trả về độ dài 2 với hai cặp nhân tố được tìm thấy.
~» (getFactorPairs 1).length
DEBUG: Factor Pair: 1, 1
2
~» (getFactorPairs 6).length
DEBUG: Factor Pair: 1, 6
DEBUG: Factor Pair: 2, 3
2
Great workround và liên kết tuyệt vời và lỗi dường như đã được khắc phục (https://connect.microsoft.com/feedback/ViewFeedback.aspx?FeedbackID=281908&SiteID=99) có lẽ trong PowerShell v3 –