# Introduction

We just solved the sudoku problem so next step we are going to tic tac toe.It looks that tic tac toe needs another strategy.

# First step

Ising machine. He just predict one step so, this time he select just one square from 9.

`q0 q1 q2q3 q4 q5q6 q7 q8`

Select 1 from 9

`from blueqat.opt import Opta = Opt().add("(q0+q1+q2+q3+q4+q5+q6+q7+q8-1)^2",N=9).run()print(np.reshape(a,(3,3)))`

He selected the middle left square.

`[[0 0 0] [o 0 0] [0 0 0]]`

# Human

Of course I choose the center one.

`[[0 0 0] [o x 0] [0 0 0]]`

# Ising

Next step he select the square which is the most high cost strategy to finally win the game. Now we think about vertical or horizontal line.

`a = Opt().add("10*(q0+q1+q2+q3+q4+q5+q6+q7+q8-2)^2-(q0+q1+q2)^2-(q3+q4+q5)^2-(q6+q7+q8)^2-(q0+q3+q6)^2-(q1+q4+q7)^2-(q2+q5+q8)^2",N=9).add(np.diag([0,0,0,-100,100,0,0,0,0])).run()print(np.reshape(a,(3,3)))`

He selected the left bottom square.

`[[0 0 0] [o x 0] [o 0 0]]`

# Human

I selected the square not to let him win.

`[[x 0 0] [o x 0] [o 0 0]]`

# Ising

This time he needs some strategy to block my turn. He just calculate the highest value of “my” strategy.

`a = Opt().add("10*(q0+q1+q2+q3+q4+q5+q6+q7+q8-3)^2-(q0+q4+q8)^2-(q2+q4+q6)^2+q1*0+q3*0+q5*0+q7*0",N=9).add(np.diag([-100,0,0,100,-100,0,100,0,0])).run()print(np.reshape(a,(3,3)))`

He blocked me.

`[[x 0 0] [o x 0] [o 0 o]]`

# Human

Of course I blocked him.

`[[x 0 0] [o x 0] [o x o]]`

# Ising

Also the same strategy he will block me.

`[[x 0 0] [o x 0] [o x o]]a = Opt().add("10*(q0+q1+q2+q3+q4+q5+q6+q7+q8-4)^2-(q0+q1+q2)^2-(q3+q4+q5)^2-(q6+q7+q8)^2-(q0+q3+q6)^2-(q1+q4+q7)^2-(q2+q5+q8)^2",N=9).add(np.diag([-100,0,0,100,-100,0,100,-100,100])).run()print(np.reshape(a,(3,3)))`

Easy for him.

`[[x o 0] [o x 0] [o x o]]`

# And human and ising finally.

It’s draw.

`[[x o x] [o x o] [o x o]]`

The hardest point for me is to make the cost function of lines. I just used two cost function. One for the vertical and horizontal evaluation and another for the slating line.

The hyper parameters are easily found. The code and strategy is scattering. I try to refactoring it in near future.

Written by