Comment detail

数値リストの圧縮 (Nested Flatten)
$ compact_number_list 1 3 4 5 6 12 13 15 20 25 26 27
[ 1 [ 3 6 ] 12 13 [ 15 25 5 ] 26 27 ]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
function compact_number_list() {
    echo -n '[ '
    while (($# > 0));do
        if (($# >= 3)) && (($2 - $1 == $3 - $2));then
            local d=$(($2 - $1))
            echo -n "[ $1 "
            shift 2
            while (($# >= 2)) && (($2 - $1 == d));do
                shift
            done
            echo -n "$1 "
            ((d != 1)) && echo -n "$d "
            echo -n '] '
        else
            echo -n "$1 "
        fi
        shift
    done
    echo ']'
}

Index

Feed

Other

Link

Pathtraq

loading...