gpt4 book ai didi

shell - 画一棵圣诞树

转载 作者:行者123 更新时间:2023-12-01 10:21:02 26 4
gpt4 key购买 nike

我正在尝试按以下形式绘制一棵树

    *    
***
*****
*******
*********

如您所见,我在每一行中都需要空格和“*”星号,但我无法完全按照我想要的方式得到它

#!/bin/bash

display_tree() {
local rows=$1
local columns=$2

for ((i=0; i<$rows; i++))
do
#spaces loop
for ((j=0; j<$columns; j++))
do
echo -n " "
#drawing tree loop
for ((a=0; a<$(($i + 1)); a++))
do
echo -n "*"
done
done
echo
done
}

if [ $# -eq 2 ]; then
display_tree $1 $2
else
echo "Usage: $0 rows columns"
fi

最佳答案

这似乎对我有用。为“列”参数推荐的奇数。当 columns = 2*rows - 1 时看起来最漂亮。代码中最长的一行执行一些初等代数运算,特别是线性插值,用于计算给定行中要显示的星数。

#!/bin/bash
# Christmas tree ASCII drawer
# works nicest for odd integers

spaces() {
for ((i=0; i<$1; i++)) ; do
echo -n " "
done
}

stars() {
for ((i=0; i<$1; i++)) ; do
echo -n "*"
done
echo ""
}

display_tree() {
local rows=$1
local columns=$2

# render
for (( r=1; r <= $rows; r++ )); do
s=$(( (((columns-1) * (r-1)/(rows-1) + 1)/2)*2 +1 ))
spaces $(((columns-s)/2))
stars $s
done
}

if [ $# -eq 2 ]; then
display_tree $1 $2
else
echo "Usage: $0 rows columns"
fi

示例输出:

./display_tree.sh 5 21
*
*******
***********
*****************
*********************

./display_tree.sh 30 59
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
*******************************
*********************************
***********************************
*************************************
***************************************
*****************************************
*******************************************
*********************************************
***********************************************
*************************************************
***************************************************
*****************************************************
*******************************************************
*********************************************************
***********************************************************

关于shell - 画一棵圣诞树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408728/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com