beldmit: (Программизм)
[personal profile] beldmit
Как и планировал, начал писать на питоне вот эту игру. Из правил осталось реализовать компенсацию и банкротство, и можно будет подсовывать AI разные целевые функции и сравнивать, какая лучше.


Так я и не почувствовал, когда массив/словарь передается по ссылке, а когда - по значению. Поэтому copy() в коде расставлены хаотически.

Очень раздражает невозможность проверить синтаксис. Сообщения об ошибках тоже ясностью не отличаются.

Спроектировать разделение на классы получается тоже крайне невнятно. Понятно, что игрок - это отдельный класс, потому как ему разные стратегии выбора оптимального хода прописывать. Функции применения карт ушли в условно-главный модуль, хотя можно их выделить отдельно. "Игра", собственно, по смыслу синглтон.

Целевые функции, похоже, надо будет тщательно калибровать. Собственно, интересных моментов для выбора алгоритма я там нашел пока ровно 3: покупку-продажу после изменения цен, выбор, большую или малую карту класть (подозреваю, что тут надо отдельно считать оптимум для больших и малых, и отталкиваться от соотношения по целевой функции), и то, какую долю вкладывать в повышаемые акции из свободных средств.

А там, глядишь, и до интерфейса доберусь (видимо, ncurses и PyQt).


Еще бы правила оригинальной версии найти.

Date: 2010-01-05 09:29 am (UTC)
From: [identity profile] beldmit.livejournal.com
На самом деле нарвался я на то, что переменная, обрабатываемая в цикле, сохраняла последнее значение, а не то, которое должна.

Date: 2010-01-05 01:06 pm (UTC)
phd_ru: (Default)
From: [personal profile] phd_ru
Ты вот это имеешь ввиду?
i = 0
f = lambda: i
i = 1
print f()
Это не цикл и не передача по ссылке, это closure. При создании lambda (или def, между ними нет разницы) запоминает ссылку на окружающее пространство имён, в котором есть ссылка на переменную i. Даже если ссылка i потом изменится, lambda-то помнит не i, а то пространство имён, в котором определена i, ну и lambda найдёт в этом запомненном пространстве имён новое значение i.

Profile

beldmit: (Default)
Dmitry Belyavskiy

May 2025

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2025 01:16 am
Powered by Dreamwidth Studios