Skip to content

Latest commit

 

History

History
37 lines (24 loc) · 1015 Bytes

README.md

File metadata and controls

37 lines (24 loc) · 1015 Bytes

#Queens

##The Riddle

Have you ever wondered if it's possible to arrange 8 Queens on a standard chess board with all the positions being mutually non-threatening?

Probably not -- But if so, then look no further!

For example:

0 0 0 0 0 1 0 0 
0 0 0 1 0 0 0 0 
1 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 
0 0 0 0 0 0 0 1 
0 1 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 1 0 0 0 0 0

(0's are empty cells, 1's are positions of queen pieces)

This code is written for square board sizes up to 8x8 cells. The positions are bit-packed into an unsigned long (i.e. 64 bits) structure.

Implementing larger sizes of boards would require a more generalized data structure.

##Conclusions

It is an interesting foray into algorithms and data structures in C.

Some interesting results:

  • On an 8x8 board, there are 92 unique solutions (counting rotations as unique)
  • A 4x4 board is the smallest board size with solutions (4 queens) -- 2 solutions
  • 5x5: 10 Solutions
  • 6x6: 4 Solutions
  • 7x7: 40 Solutions