Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/nash
- showStepY() {
- local WIDTH="$1"; shift
- local LEVEL="$1"; shift
- local CHAR="$1"; shift
- local MAXLEVEL=0
- local MAXSIZE=1
- local SIZE=1
- local REPEAT=1
- while [ $(($MAXSIZE*2)) -lt "$WIDTH" ]; do
- MAXSIZE=$(($MAXSIZE*2))
- MAXLEVEL=$(($MAXLEVEL+1))
- if [ "$MAXLEVEL" -le "$LEVEL" ]; then
- SIZE=$(($SIZE*2))
- else
- REPEAT=$(($REPEAT*2))
- fi
- done
- local INDENT=$(( ($WIDTH-$MAXSIZE)/2 ))
- local LINES=$(($SIZE/2))
- {
- if [ "$LINES" -gt 0 ]; then
- for i in `seq 0 $(($LINES-1))`; do
- printf '%*s' $INDENT ''
- for j in `seq 1 $(($REPEAT/2))`; do
- printf '%*s%*s%*s' $(($SIZE/2+$i)) "$CHAR" $(($SIZE-$i*2)) "$CHAR" $(($SIZE/2+$i)) ''
- done
- printf '%*s\n' $(($INDENT)) ''
- done
- fi
- for i in `seq $(($SIZE-$LINES)) -1 1`; do
- printf '%*s' $INDENT ''
- for j in `seq 1 $(($REPEAT/2))`; do
- printf '%*s%*s' $SIZE "$CHAR" $SIZE ''
- done
- printf '%*s\n' $INDENT ''
- done
- } | tr ' ' _
- return
- }
- showYTree() {
- local WIDTH="$1"; shift
- local MAXLEVEL="$1"; shift
- local ITER="$1"; shift
- for i in `seq 0 $MAXLEVEL`; do
- local CHAR=''
- [ $(($ITER+$i)) -le $MAXLEVEL ] || CHAR=1
- showStepY "$WIDTH" "$i" "$CHAR"
- done
- }
- read ITER
- showYTree 100 5 "$ITER"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement