exports
и module.exports
одинаковы, если вы не переназначаете exports
в своем модуле.
Самый простой способ подумать об этом - это думать, что эта строка неявно находится в верхней части каждый модуль.
var exports = module.exports = {};
Если в вашем модуле вы переназначаете exports
, вы переназначите его в своем модуле, и он больше не будет module.exports
. Вот почему, если вы хотите экспортировать функцию, вы должны сделать:
module.exports = function() { ... }
Если вы просто назначили function() { ... }
на exports
, вы переназначили exports
, чтобы больше не указывать на module.exports
.
Если вы не хотите каждый раз ссылаться на свою функцию на module.exports
, вы можете сделать:
module.exports = exports = function() { ... }
Обратите внимание, что module.exports
самый левый аргумент.
Прикрепление свойств к exports
не совпадает с тем, что вы не переназначаете его. Вот почему это работает
exports.foo = function() { ... }
Connect 4 - решенная игра (спойлер, игрок 1 выигрывает, когда играет идеально). Вы можете прочитать все о том, как решение было достигнуто в Основанный на знаниях подход Connect-Four . Это довольно увлекательное чтение, потому что они сделали это в то время, когда вычислительные ресурсы были значительно труднее найти.
Общая идея состоит в том, чтобы создать огромную базу данных с позициями известных значений, затем min-max с отсечкой альфа-бета, пока вы не достигнете одной из позиций в базе данных. Создание этой базы данных было сложным из-за вычислительных ресурсов и ресурсов хранения в то время, когда это происходило, но вы, вероятно, могли бы достичь чего-то подобного сегодня с меньшими усилиями.
Хотя это не дает прямого ответа на ваш вопрос, мы надеемся, что этот справочник станет хорошим местом для начала вашего исследования, поскольку он включает в себя анализ множества общих ситуаций в Connect 4, которые вы можете использовать для улучшения своей функции оценки.