今天看到一个shell打印伪杨辉三角的问题,觉的好玩,就写了个脚本实现,后续有时间继续整理:
打印需求(以5行为例):
1
2 1 2
3 2 1 2 3
4 3 2 1 2 3 4
5 4 3 2 1 2 3 4 5
思想:
将输出分为2部分,每个打印点为一个空格加1个数,用条件将输出分为2部分,前部分为中心位置之前,后部分为中心位置之后,前部分是先输出空格再根据数的大小递减输出,后部分是先递增输出数,最后输出空格。
实现脚本:
#!/bin/sh
##这个脚本是输出一个类似下面样本的数列
# 1
# 2 1 2
# 3 2 1 2 3
# 4 3 2 1 2 3 4
#5 4 3 2 1 2 3 4 5
##脚本编写时间2013年4月24日
##by bbzsxjj ver 1.0
echo -n "请输入需要输入的行数:"
read MAX
##设置打印的长度,一般为最大行数的2倍再减一
let "MXLONG=$MAX*2 -1"
#echo $MXLONG
##控制行数
for ((line=1;line<=${MAX};line++))
do
##计算输出的空格数
space=$(($MAX-$line))
##计算后半部输出时要输出的数字数
data=$(($MXLONG-$MAX-$space))
##前半部输出
for ((li=1;li<=${space};li++))
do
echo -n " "
done
for ((ni=$line;ni>=1;ni--))
do
echo -n "$ni "
done
##后半部输出
for ((ei=0;ei<${data};ei++))
do
##设置输出的数大小
let "OI=$ei+2"
echo -n "$OI "
done
for ((ci=1;ci<=${space};ci++))
do
echo -n " "
done
##最后输出空格,完成1行的输出
echo
done
阅读(1867) | 评论(0) | 转发(0) |