You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制中间共享块、高度为2n-1的n个重叠菱形?

修正重叠菱形绘制代码

需求说明

  • 创建n个高度为2n-1的菱形,以指定字符b作为块元素
  • 所有菱形在中间位置重叠,即共享中间层的块元素(中间行的重叠部分合并为连续的块)

原代码问题

  1. 每个菱形都添加了独立的前置空格,导致菱形排列错位
  2. 中间行未处理重叠逻辑,输出多个独立块而非连续合并的块
  3. 非中间行的菱形间隔空格过大,不符合重叠效果

修正后的代码

def draw_diamonds(n, b):
    height = 2 * n - 1
    for i in range(height):
        # 计算当前行的块长度与前置空格
        if i < n:
            block_len = 2 * i + 1
            leading_spaces = n - i - 1
        else:
            block_len = 2 * (height - i) - 1
            leading_spaces = i - n + 1
        
        # 初始化当前行的第一个菱形
        line = " " * leading_spaces + b * block_len
        
        # 添加剩余n-1个菱形
        for j in range(1, n):
            if i == n - 1:
                # 中间行处理重叠:后续菱形仅补充不重叠的部分
                overlap = 2 * j
                line += b * (block_len - overlap)
            else:
                # 非中间行:菱形间添加1个空格间隔
                line += " " + b * block_len
        
        print(line)

n, b = input().split()
draw_diamonds(int(n), b)

代码说明

  • 前置空格:仅第一个菱形添加前置空格,保证整体图案居中对齐
  • 中间行重叠:通过计算重叠长度,后续菱形仅补充不重叠的块部分,实现中间层的共享合并,输出连续的块
  • 非中间行间隔:菱形间仅添加1个空格,保证上下行的菱形排列符合重叠的视觉效果

内容的提问来源于stack exchange,提问作者Pochi Mochi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:37:03