人生游戏实现在Python中无法正常运行

问题描述

我在使用自动机-生活游戏时遇到问题。好吧,我有一张图像,可以将其转换为2d矩阵。在此图像的中间有一个振荡器。如规则所述,此函数的输出应为另一个振荡器,但应旋转90度。不幸的是我的输出是错误的。您可以在下面的图像上看到。代码有什么问题?您能帮我解决这个问题吗?

def osc(tab,x,y):
    tab[x-1,y-1] = 0
    tab[x-1,y] = 1
    tab[x-1,y+1] = 0
    tab[x,y-1] = 0
    tab[x,y] = 1
    tab[x,y+1] = 0
    tab[x+1,y-1] = 0
    tab[x+1,y] = 1
    tab[x+1,y+1] = 0

    return tab

def gol():
    tab_x = 50
    tab_y = 50

    x = 25
    y = 25

    tab = np.zeros([tab_x,tab_y])
    new_tab = osc(tab,y)

    for y in range(0,tab_y):
        for x in range(0,tab_x):
            if new_tab[y,x] == 1:
                new_tab[y,x] = 0
            else:
                new_tab[y,x] = 255

    cv2.imwrite('anMD.jpg',new_tab)
    canvas.delete("all")
    cv2.imwrite('show.jpg',new_tab)
    image = Image.open('show.jpg')
    new_image = image.resize((500,500))
    new_image.save('show.jpg')
    dimg = ImageTk.PhotoImage(Image.open('show.jpg'))
    canvas.create_image(0,anchor='nw',image=dimg)
    canvas.image = dimg

def sim():
    tab = cv2.imread(jpg_path,0)
    tab_x = tab.shape[0]
    tab_y = tab.shape[1]

    new_tab = np.zeros_like(tab)

    for x in range(0,tab_x):
        for y in range(0,tab_y):
            if tab[x,y] == 255:
                tab[x,y] = 0
            else:
                tab[x,y] = 1

    for x in range(tab_x):
        for y in range(tab_y):
            """summary = 0
            summary += tab[x - 1,y - 1]
            summary += tab[x - 1,y]
            summary += tab[x - 1,y + 1]
            summary += tab[x,y - 1]
            summary += tab[x,y + 1]
            summary += tab[x + 1,y - 1]
            summary += tab[x + 1,y]
            summary += tab[x + 1,y + 1]"""

            summary = (tab[x,(y-1) % tab_y] + tab[x,(y+1) % tab_y] +
                         tab[(x-1) % tab_x,y] + tab[(x+1) % tab_x,y] +
                         tab[(x-1) % tab_x,(y-1) % tab_y] + tab[(x-1) % tab_x,(y+1) % tab_y] +
                         tab[(x+1) % tab_x,(y-1) % tab_y] + tab[(x+1) % tab_x,(y+1) % tab_y])

            if tab[x,y] == 1:
                if (summary < 2) or (summary > 3):
                    new_tab[x,y] = 0
                else:
                    new_tab[x,y] = 1
            else:
                if summary == 3:
                    new_tab[x,y] = 1

    for y in range(0,x] = 255

    for x in range (tab_x):
        for y in range (tab_y):
            tab[x,y] = new_tab[x,y]

    cv2.imwrite('anMD.jpg',new_tab)
    cv2.imwrite('show.jpg',500))
    new_image.save('show.jpg')
    canvas.delete("all")
    dimg = ImageTk.PhotoImage(Image.open('show.jpg'))
    canvas.create_image(0,image=dimg)
    canvas.image = dimg

input output

编辑:我要添加更多功能,也许有问题。现在我的代码如下:

year <- c(1939,1939,1940,1940)

degree_days <- c(184,187,190,185,189,190)

mean_temp <- c(14,15,16,10,11,12)

这是原始的50x50输入和输出。 original input original output

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)