Частично воссоздать Risk-like игру, основанную на неполных лог-файлах - PullRequest
3 голосов
/ 27 сентября 2010

Я пытаюсь воссоздать игру Conquerclub (Risk-like):

http://conquerclub.barrycarter.info/ONEOFF/7460216.html

Другими словами, я хочу знать, кто владел каждой территориейв каждый момент времени, и сколько войск они имели на этой территории.Мой основной источник информации - игровой журнал.Примечания:

% Это не в игровом журнале, но все территории начинаются с 3 войск.

% Поскольку мы знаем владельцев территорий в конце игры, а в журнале игр упоминаются все смены владельцев, определение владельцев территории в любой момент времени легко.

% Задача состоит в том, чтобы найти количество войск на территории в данный момент времени.

% Журнал игр содержит информацию о развертывании, усилении и завоевании войск.

% Однако , Журнал игр неполон.Предположим, территория X безуспешно атакует территорию Y, но обе территории теряют свои войска.Журнал игры не будет упоминать об этом.

% Вероятно, в целом невозможно (* в общем) найти точное количество войск на территории в данный момент времени, поэтому я ищу диапазон.

% Я пытался передать данные в Mathematica как серию неравенств, но, как предупреждает руководство, время вычислений экспоненциально увеличивается с увеличением числа неравенств.Даже при довольно небольшом количестве неравенств оно зависает.Кроме того, я не уверен, что Mathematica - правильный инструмент здесь.

% Есть мысли?Другой пример: http://conquerclub.barrycarter.info/ONEOFF/7562013.html

% Я знаю о http://userscripts.org/scripts/show/83035, но он отслеживает только \ владельцев, а не количество войск.

1 Ответ

2 голосов
/ 27 сентября 2010

Вы можете использовать программирование ограничений Пролога (в частности, CLP / FD ).Это потребует от вас кодирования всех правил в Прологе, что может быть нетривиальной задачей.Однако Prolog сможет тогда показать вам все возможные допустимые (законные с точки зрения закодированных правил) способы игры в такую ​​игру или просто показать диапазоны возможных значений.

Кроме того, в то время как CLP / FD в Prolog иногдадовольно быстро, может быть трудно использовать его для быстрого решения вашей проблемы.У большинства бесплатных решателей есть много причуд.

Опять же, я думаю, что это нетривиальная задача, и даже больше, если вы ранее не программировали в Прологе.Но я уверен, что это даст вам ответы, которые вы ищете.

...