A format for expressing an ordered list of integers is to use a comma separated list of either

 individual integers
 Or a range of integers denoted by the starting integer separated from the end integer in the range by a dash, '-'. (The range includes all integers in the interval including both endpoints)
 The range syntax is to be used only for, and for every range that expands to more than two values.
Example

The list of integers:

 -6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20
Is accurately expressed by the range expression:

 -6,-3-1,3-5,7-11,14,15,17-20
(And vice-versa).

Task

 Create a function that takes a list of integers in increasing order and returns a correctly formatted string in the range format. 
 Use the function to compute and print the range formatted version of the following ordered list of integers. (The correct answer is: 0-2,4,6-8,11,12,14-25,27-33,35-39).


    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

 Show the output of your program.


Related task

   Range expansion


function rangeExtract nums
    local prevNum, znums, rangedNums
    set itemDelimiter to ", "
    put the first item of nums into prevNum
    repeat for each item n in nums
        if n is (prevNum + 1) then
            put n into prevNum
            put "#" & n after znums
        else
            put n into prevNum
            put return & n after znums
        end if
    end repeat
    set itemDelimiter to "#"
    repeat for each line z in znums
        if z is empty then next repeat
        switch the number of items of z 
            case 1
                put z & "," after rangedNums
                break
            case 2
                put item 1 of z & "," & item -1 of z & "," after rangedNums
                break
            default
                put item 1 of z & "-" & item -1 of z & "," after rangedNums
        end switch
    end repeat
    return char 1 to -2 of rangedNums  --strip off trailing comma
end rangeExtract
 