stefandd / Tic4

4x4 Tic Tac Toe playing AI in Lua and Lobster

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Tic4

A simple 4x4 Tic Tac Toe playing AI in Lua and Lobster. In addition to four in a row (or column or diagonal), four in a square also win. Other than playing with Lobster as a language that was new to me but which I quite liked, I also wanted to benchmark both languages using constructs that are as equivalent as possible. The negamax modules contain a generic negamax implementation and the tic4 files implement the specific rules for this 4x4 TTT variant.

Examples of winning conditions:

o . . .   . . . .
. o . .   . o o .
. . o .   . o o .
. . . o   . . . .

Playing against it

You can run it to play against the computer (both the tic4 and negamax files are needed in each language) but you have to live with a very simple command line interface for now.

lua/luajit tic4.lua
lobster tic4.lobster

Benchmark mode

One can also run it to benchmark the languages and implementations by calling

lua/luajit tic4.lua bench
lobster tic4.lobster -- bench

This will compute the best move from an empty board to a search depth of 7 starting (a bit more than 1M positions) and report the time this took.

Benchmark results

Below are the results for my machine (i5-4690K @3.5GHz) using the latest Lobster in JIT mode (x64 Release using MingW), the C++-compiled Lobster code (x64 Release using MingW), the Lua 5.4beta, and the HEAD version of Luajit 2.1-beta3. While the Lobster JIT is currently already quite a bit faster than Lua 5.4, the version compiled to C++ (using the --cpp switch) even beats Luajit 2.1 which I think is remarkable given the maturity of Luajit. A different C++ compiler might even increase the advantage...

Benchmark results

About

4x4 Tic Tac Toe playing AI in Lua and Lobster


Languages

Language:Lua 84.3%Language:Nim 15.7%