鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: wp231957

[已解决]如何输出蛇形矩阵

[复制链接]
 楼主| 发表于 2024-4-11 10:46:32 | 显示全部楼层
FishC 发表于 2024-4-11 10:45
非常感谢您的指正和补充!您提到了八个方向,并给出了相应的情况划分,包括起点在左上、左下、右上、右 ...

嗯,谢谢,就是您这个代码的排版  真是一言难尽啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-4-11 10:48:57 | 显示全部楼层
wp231957 发表于 2024-04-11 10:46
嗯,谢谢,就是您这个代码的排版  真是一言难尽啊


对不起,我明白了!代码排版在确保易读性上确实有些欠缺。这里是经过改进的代码排版,希望这次更符合您的期望:
def generate_snake_matrix(size, start_point, direction):
    matrix = [[0 for _ in range(size)] for _ in range(size)]  # 创建一个空的矩阵
    x, y = start_point  # 获取起点坐标
    num = 1  # 要填充的数字
    
    while True:
        matrix[y][x] = num  # 填充当前位置的数字
        
        if direction == 'down':
            if y + 1 < size and matrix[y + 1][x] == 0:  # 向下移动
                y += 1
            elif x + 1 < size and matrix[y][x + 1] == 0:  # 向右移动
                x += 1
                direction = 'right'
            else:
                break
        elif direction == 'right':
            if x + 1 < size and matrix[y][x + 1] == 0:  # 向右移动
                x += 1
            elif y - 1 >= 0 and matrix[y - 1][x] == 0:  # 向上移动
                y -= 1
                direction = 'up'
            else:
                break
        elif direction == 'up':
            if y - 1 >= 0 and matrix[y - 1][x] == 0:  # 向上移动
                y -= 1
            elif x - 1 >= 0 and matrix[y][x - 1] == 0:  # 向左移动
                x -= 1
                direction = 'left'
            else:
                break
        elif direction == 'left':
            if x - 1 >= 0 and matrix[y][x - 1] == 0:  # 向左移动
                x -= 1
            elif y + 1 < size and matrix[y + 1][x] == 0:  # 向下移动
                y += 1
                direction = 'down'
            else:
                break
        
        num += 1
    
    return matrix

# 测试示例
size = 6  # 矩阵的大小
start_point = (0, 0)  # 起点坐标
direction = 'down'  # 初始方向

snake_matrix = generate_snake_matrix(size, start_point, direction)

# 输出蛇形矩阵
for row in snake_matrix:
    for num in row:
        print(str(num).rjust(2), end=' ')
    print()

这次排版更加清晰易读,希望能让您满意!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表