趣味shell之菱形的n种玩法
众所周知,语言这门行业总是有许多的娱乐性,我今天来做一个菱形的多种命令,来进行娱乐娱乐。
一,使用多个三角形进行拼接
- 我们可以利用三角形进行拼接菱形,
#!/bin/bash #基本格式,不可不写
for ((a=1;a<=9;a++)) #做一个九行的图型
do
for ((b=9;b>=a;b--)) #建立空白的三角形
do
echo -n " " #输出空白 -n表示不换行
done
for ((c=1;c<=a;c++)) #建立一个直角三角形
do
echo -n "#"
done
for ((d=2;d<=a;d++)) #建立与之前相反的直角三角形
do
echo -n "#"
done
echo "" #代表换行输出
done
for ((i=1;i<=8;i++))
do
for ((e=0;e<=i;e++))
do
echo -n " "
done
for ((f=8;f>=i;f--))
do
echo -n "#"
done
for ((g=7;g>=i;g--))
do
echo -n "#"
done
echo ""
done
下面给大家看一下成品
二,使用算法来进行建立两个等腰三角形,拼接成菱形
#!/bin/bash
for ((a=1;a<=9;a++))
do
for ((b=9;b>=a;b--))
do
echo -n " "
done
for ((c=1;c<=$[($a*2)-1];c++))
do
echo -n "*"
done
echo ""
done
for ((i=1;i<=9;i++))
do
for ((d=0;d<=i;d++))
do
echo -n " "
done
for ((e=15;e>=$[($i*2)-1];e--))
do
echo -n "*"
done
echo ""
done
三,还可以使用上面使用图形拼接,下面使用算法的方式来做
#!/bin/bash
for ((a=1;a<=9;a++))
do
for ((b=9;b>=a;b--))
do
echo -n " "
done
for ((c=1;c<=a;c++))
do
echo -n "*"
done
for ((d=2;d<=a;d++))
do
echo -n "*"
done
echo ""
done
for ((e=1;e<=8;e++))
do
for((f=0;f<=e;f++))
do
echo -n " "
done
for ((g=15;g>=$[(2*$e)-1];g--))
do
echo -n "*"
done
echo ""
done
- 为了更直观一点,我将下方的*号改成了#,能够更加直观的看出来