Оптимизация муравья Лэнгтона в Python - PullRequest
0 голосов
/ 24 сентября 2019

Я использую graphics.py в Python для создания действительно простой Ant программы Лэнгтона.Моя проблема в том, что муравью требуется более 2 минут и 30 секунд для «шоссе».Я бы хотел, чтобы это было сокращено до нескольких секунд, если это возможно.

Я уже пытался "оптимизировать" мой код (сократить с ~ 90 строк до ~ 45 строк, в основном просто сжимая кучу операторов if).Это побрилось примерно на 10 секунд, поэтому я предполагаю, что проблема заключается в реальном рендеринге.Я действительно хочу, чтобы муравей проследил его путь по экрану, но боюсь, проблема заключается в том, чтобы каждый пиксель рисовался черным или белым.

Вот основной блок моего текущего кода:

#Import graphics.py and math, initialize variables

grid = [[0 for x in range(xSize)] for y in range(ySize)]  # 0 is white, 1 is black

while key != 'x':
    key = win.checkKey()
    if grid[antX][antY] == 0: #Light square
        if antDir < 4: #Turn ant right
            antDir += 1
        else:
            antDir = 1
        grid[antX][antY] = 1
        win.plotPixel(antX, antY, "black")
    elif grid[antX][antY] == 1: #Dark square
        if antDir > 1: #Turn ant left
            antDir -= 1
        else:
            antDir = 4
        grid[antX][antY] = 0
        win.plotPixel(antX, antY, "white")
    if antDir == 1 and antY != 0:
        antY -= 1
    elif antDir == 2 and antX != xSize-1:
        antX += 1
    elif antDir == 3 and antY != ySize-1:
        antY += 1
    elif antDir == 4 and antX != 0:
        antX -= 1
    else:
        break #Break if touching wall
key = win.getKey()

Итак, что вы, ребята, думаете?Должен ли я использовать другую библиотеку?В моем коде что-то затягивает?Или я просто не могу несколько раз рисовать на экране в разумные сроки?

Я использую Acer Aspire E5-576G с процессором i5 и 8 гигабайтами оперативной памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...