# Order VS Chaos AI

# Project Page: github/chaos

This is a basic AI for the game Order and Chaos.

## Game Rules

I heard about the game Order and Chaos from Tom Scott’s youtube video

The basics of the game are as follows:

- Two players have a role assigned, one is ORDER, the other is CHAOS
- The game board is a 6x6 grid
- The players alternate playing. Either player plays either an X or an O
- The ORDER player wins if there is a horizontal, vertical, or diagonal set of five Xes OR five Oes
- The CHAOS player wins by denying the ORDER playing such a set of five Xes or Oes until the game ends

## AI

Simple AI with alpha-beta pruning

### Heuristic

There are 32 possible sets of 5 positions which can be a WIN for the ORDER player.

- 12 horizontal
- 12 vertical
- 4 diagonal \
- 4 diagonal /

The heuristic evaluates each of those 32 lines and assigns it a value.

- If there is a combination of Xes and Oes, then the value is -1 since order cannot win that line.
- Otherwise the score is positive and depends on the number of filled spaces in the line (XXX is valued higher than XX)

The overall heuristic is a sum of all 32 line heuristics

To quickly lookup the line heuristic. I used a simple Python script (generator.py) which generates a 1024 element lookup table. The 5 positions in a line are converted to a 10 bit value (2 bits per position). That value can be instantly converted to a value by indexing into the lookup table.

## play.js

This is a simple NodeJS script which plays two AIs against each other. It requires the AI to accept the current board state as an argument and writes out a move to stdout

It will play the AIs back and forth until one of them is determined to be the winner