31 lines
964 B
Plaintext
31 lines
964 B
Plaintext
function range-extraction($arr) {
|
|
if($arr.Count -gt 2) {
|
|
$a, $b, $c, $arr = $arr
|
|
$d = $e = $c
|
|
if((($a + 1) -eq $b) -and (($b + 1) -eq $c)) {
|
|
$test = $true
|
|
while($arr -and $test) {
|
|
$d = $e
|
|
$e, $arr = $arr
|
|
$test = ($d+1) -eq $e
|
|
}
|
|
if($test){"$a-$e"}
|
|
elseif((-not $arr) -and $test){"$a-$d"}
|
|
elseif(-not $arr){"$a-$d,$e"}
|
|
else{"$a-$d," + (range-extraction (@($e)+$arr))}
|
|
}
|
|
elseif(($b + 1) -eq $c) {"$a," + (range-extraction (@($b, $c)+$arr))}
|
|
else {"$a,$b," + (range-extraction (@($c)+$arr))}
|
|
} else {
|
|
switch($arr.Count) {
|
|
0 {""}
|
|
1 {"$arr"}
|
|
2 {"$($arr[0]),$($arr[1])"}
|
|
}
|
|
}
|
|
}
|
|
range-extraction @(0, 1, 2, 4, 6, 7, 8, 11, 12, 14,
|
|
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
|
25, 27, 28, 29, 30, 31, 32, 33, 35, 36,
|
|
37, 38, 39)
|