本を読む

読書やコンピュータなどに関するメモ

Re: compact-number-list

 bashで。引数→標準出力。

function compact-number-list() {
    local i r prev=-2
    for i;do
        if ((i != prev + 1));then
            print-range $r
            r=''
        fi
        r="$r $i"
        prev=$i
    done
    print-range $r
    echo
}

function print-range() {
    if (( $# > 1 ));then
        echo -n "( $1 "
        shift $(($# - 1))
        echo -n "$1 ) "
    else
        echo -n "$1 "
    fi
}

# test
echo -n '1 3 4 5 6 12 13 15 ->'
compact-number-list 1 3 4 5 6 12 13 15
# expects:
# 1 3 4 5 6 12 13 15 -> 1 ( 3 6 ) ( 12 13 ) 15 

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/456-5d25cacf

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad