Ним на Elm
Дата: August 18, 2014
Написал игру Ним на Elm (компилируется в JavaScript) - это экзотика в виде очень урезанного диалекта Haskell. Хотелось попрактиковаться в FRP (functional reactive programming). Идея интересная, но ловил себя на мысли, что не хватает готовых функций из Haskell, ну и язык менее мощный. Надо будет Fay или GHCJS посмотреть.
При оптимальной игре в Ним, после четного количества игр, счет будет равным - то компьютер начинает с заведомо проигрышной позиции, то ты. Классика, конечно. Но что интересно, цитата “единственный способ стать умнее — играть с более умным противником” здесь очень хорошо работает. Если не знать математической подоплеки и играть с другим неопытным игроком, то мозг довольно длительно будет перебирать разные стратегии, раз за разом ты совершаешь одни и те же ошибки, потому что одна и та же позиция, то приводит к выигрышу, то нет. В то же время, если играешь с идеальным игроком, который не делает ошибок, мозг гораздо быстрее начинает распознавать выигрышные и проигрышные позиции из полученного опыта.
И мне показалось, что в случае игры с неопытным игроком, обучение проходит через формирование глубокой логической базы, т.е. по сути внутри мозга проходят массивные логические вычисления. В то же время, с сильным противником, мозг скорее оперирует выигрышными позициями, не особенно привлекая логику, точнее логика как-то задним числом начинает работать и ты говоришь себе, ну так ежу понятно, что так нельзя было ходить. Только где был тот ёж в начале обучения, не понятно.