首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >幻方-暹罗方法

幻方-暹罗方法
EN

Stack Overflow用户
提问于 2015-03-05 13:09:47
回答 1查看 1.9K关注 0票数 0

有没有可能用暹罗/德拉卢比雷的方法做魔术方块而不用模?

我想用它做奇数n×n幻方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 15:22:56

是的,有可能。用Python3.5编写:

代码语言:javascript
复制
def siamese_method(n):

    assert(n % 2 != 0), 'Square side size should be odd!'
    square = [[0 for x in range(n)] for x in range(n)]
    x = 0
    y = int((n + 1) / 2 - 1)
    square[x][y] = 1

    for i in range(2, n * n + 1):
        x_old = x
        y_old = y

        if x == 0:
            x = n - 1
        else:
            x -= 1

        if y == n - 1:
            y = 0
        else:
            y += 1

        while square[x][y] != 0:
            if x == n - 1:
                x = 0
            else:
                x = x_old + 1
            y = y_old

        square[x][y] = i

    for j in square:
        print(j)


siamese_method(3)

输出结果如下:

代码语言:javascript
复制
[8, 1, 6]
[3, 5, 7]
[4, 9, 2]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28878632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档