Advertisement
Tariqul_Islam

Functions and Fractals - Recursive Trees - Bash!

Aug 16th, 2020
2,182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.50 KB | None | 0 0
  1. #!/bin/nash
  2. showStepY() {
  3.     local WIDTH="$1"; shift
  4.     local LEVEL="$1"; shift
  5.     local CHAR="$1"; shift
  6.     local MAXLEVEL=0
  7.     local MAXSIZE=1
  8.     local SIZE=1
  9.     local REPEAT=1
  10.     while [ $(($MAXSIZE*2)) -lt "$WIDTH" ]; do
  11.         MAXSIZE=$(($MAXSIZE*2))
  12.         MAXLEVEL=$(($MAXLEVEL+1))
  13.         if [ "$MAXLEVEL" -le "$LEVEL" ]; then
  14.             SIZE=$(($SIZE*2))
  15.         else
  16.             REPEAT=$(($REPEAT*2))
  17.         fi
  18.     done
  19.     local INDENT=$(( ($WIDTH-$MAXSIZE)/2 ))
  20.     local LINES=$(($SIZE/2))
  21.     {
  22.         if [ "$LINES" -gt 0 ]; then
  23.             for i in `seq 0 $(($LINES-1))`; do
  24.                 printf '%*s' $INDENT ''
  25.                 for j in `seq 1 $(($REPEAT/2))`; do
  26.                     printf '%*s%*s%*s' $(($SIZE/2+$i)) "$CHAR" $(($SIZE-$i*2)) "$CHAR" $(($SIZE/2+$i)) ''
  27.                 done
  28.                 printf '%*s\n' $(($INDENT)) ''
  29.             done
  30.         fi
  31.         for i in `seq $(($SIZE-$LINES)) -1 1`; do
  32.             printf '%*s' $INDENT ''
  33.             for j in `seq 1 $(($REPEAT/2))`; do
  34.                 printf '%*s%*s' $SIZE "$CHAR" $SIZE ''
  35.             done
  36.             printf '%*s\n' $INDENT ''
  37.         done
  38.     } | tr ' ' _
  39.     return
  40. }
  41.  
  42. showYTree() {
  43.     local WIDTH="$1"; shift
  44.     local MAXLEVEL="$1"; shift
  45.     local ITER="$1"; shift
  46.     for i in `seq 0 $MAXLEVEL`; do
  47.         local CHAR=''
  48.         [ $(($ITER+$i)) -le $MAXLEVEL ] || CHAR=1
  49.         showStepY "$WIDTH" "$i" "$CHAR"
  50.     done
  51. }
  52.  
  53. read ITER
  54. showYTree 100 5 "$ITER"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement