Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
30
Task/Range-extraction/UNIX-Shell/range-extraction.sh
Normal file
30
Task/Range-extraction/UNIX-Shell/range-extraction.sh
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
range_contract () (
|
||||
add_range () {
|
||||
case $(( current - range_start )) in
|
||||
0) ranges+=( $range_start ) ;;
|
||||
1) ranges+=( $range_start $current ) ;;
|
||||
*) ranges+=("$range_start-$current") ;;
|
||||
esac
|
||||
}
|
||||
|
||||
ranges=()
|
||||
range_start=$1
|
||||
current=$1
|
||||
shift
|
||||
|
||||
for number; do
|
||||
if (( number > current+1 )); then
|
||||
add_range
|
||||
range_start=$number
|
||||
fi
|
||||
current=$number
|
||||
done
|
||||
add_range
|
||||
|
||||
x="${ranges[@]}"
|
||||
echo ${x// /,}
|
||||
)
|
||||
|
||||
range_contract 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue