Advertisement
Guest User

triforce.sh

a guest
Apr 30th, 2019
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.00 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. [ -z "$*" -o "$*" = "help" ] && echo triforce.sh [layer] [height]
  4. [ "$1" -eq "$1" ] 2>/dev/null && l=$1 || l=2 # layers to generate
  5. [ "$2" -eq "$2" ] 2>/dev/null && h=$2 || h=5 # height of individual triangle
  6.  
  7. rptchar() {
  8.     local iter char
  9.     char=$1 # must be single char
  10.     iter=$2 # must be integer
  11.  
  12.     if [ $iter -le 0 ]; then
  13.         return 0
  14.     elif [ $iter -le 4500 ]; then
  15.         eval printf "%.s$char" {1..$iter} # uses eval
  16.     else
  17.         printf '%*s' $iter | tr ' ' "$char"
  18.     fi
  19. }
  20.  
  21. for ((k=1;k<=$l;k++)); do
  22.  
  23.     # generate triangles for a single layer
  24.     for ((i=1;i<=$h;i++)); do
  25.  
  26.         # generate initial padding for triangles
  27.         # comment out for the true triforce effect
  28.         rptchar '\ ' $((h * (l - k)))
  29.  
  30.         # generate the initial triangle
  31.         rptchar '\ ' $((h - i))
  32.         rptchar '*' $((2 * i - 1))
  33.  
  34.         # generate the other triangles
  35.         for ((j=2;j<=$k;j++)); do # does not execute when k=1
  36.             rptchar '\ ' $((2 * (h - i + 1) - 1))
  37.             rptchar '*' $((2 * i - 1))
  38.         done
  39.        
  40.         printf "\n"
  41.     done
  42. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement