【CodinGame】简单地图生成

要求

在这里插入图片描述

在这里插入图片描述
(图片来自codingame)

代码

# 定义一个函数,用于生成模式
def generate_pattern(n, a, border_char): 
    # 初始化一个空列表,用于存储生成地图
    pattern = []

    # 最上面那一行的处理
    line = n * border_char
    pattern.append(line)

    # 遍历n次
    for i in range(n):
        # 如果i小于等于n的一半,上半区域
        if i <= n // 2:
            # 计算内部的个数,即2*i+1
            num_fill = 2 * i + 1
        # 否则
        else:
            # 计算内部字符的个数,即2*(n-i-1)+1
            num_fill = 2 * (n - i - 1) + 1
        # 生成一行模式,使用border_char填充,并在两侧使用a填充
        line = (
            border_char * ((n - num_fill) // 2)
            + a * num_fill
            + border_char * ((n - num_fill) // 2)
        )
        # 将生成的行模式添加到模式列表中
        pattern.append(line)

    # 最后一行的处理
    line = n * border_char
    pattern.append(line)
    # 返回生成的模式列表
    return pattern


# 定义一个函数,用于打印模式
def print_pattern(pattern):
    # 遍历模式列表
    for line in pattern:
        # 打印每一行模式
        print(line)



n1 = 9
a1 = "O"
border_char1 = "-"

n2 = 19
a2 = "#"
border_char2 = "."

# 生成并打印地图
pattern1 = generate_pattern(n1, a1, border_char1)
print_pattern(pattern1)

print()

pattern2 = generate_pattern(n2, a2, border_char2)
print_pattern(pattern2)

解释

在这里插入图片描述

END

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_千思_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值