I am looking into a website with starting positions for chess960.


So there is a table that converts any number from 0 to 959 to a starting position. For example chess960(518) = 'RNBQKBNR' normal starting chess position.

What is this formula? How can I do this without storing all the table?

  • 1
    The chess960 sites show you how to do it. Generate them and store them. Then you won't have to calculate them every time.
    – Tony Ennis
    Jul 2, 2014 at 12:03
  • Are you writing a chess program? Jul 2, 2014 at 23:55
  • @wes yes, I am writing a chess server. I want to add ability to play chess960. Currently I have a list of all positions as a list, but having 960 elements is not really nice, especially if there is some formula which can convert a number to this 8 digit string. Jul 3, 2014 at 1:24
  • 1
    @SalvadorDali why not nice? If you store them in an array it's less than 8KB. Very performance efficient for a server doing a simple O(1) lookup. Jul 3, 2014 at 3:21
  • I wanted a more elegant approach. O(1) looks good from theoretical computer science approach. I hardly doubt that a formula would be that hard. Even if it would be O(n^2) which is highly unlikely for 960 elements even with the crapiest computer right now will run less than 0.1 second. I was also curious how this convention appeared, so it is not only about my chess program. Thanks for taking a look at my problem. Jul 3, 2014 at 3:27

1 Answer 1


From Wikipedia:

White's Chess960 starting array can be derived from its number N (0 ... 959) as follows:

a) Divide N by 4, yielding quotient N2 and remainder B1. Place a Bishop upon the bright square corresponding to B1 (0=b, 1=d, 2=f, 3=h).

b) Divide N2 by 4 again, yielding quotient N3 and remainder B2. Place a second Bishop upon the dark square corresponding to B2 (0=a, 1=c, 2=e, 3=g).

c) Divide N3 by 6, yielding quotient N4 and remainder Q. Place the Queen according to Q, where 0 is the first free square starting from a, 1 is the second, etc.

d) N4 will be a single digit, 0 ... 9. Place the Knights according to its value by consulting the following table:

0     N   N   -   -   -
1     N   -   N   -   -
2     N   -   -   N   -
3     N   -   -   -   N
4     -   N   N   -   -
5     -   N   -   N   -
6     -   N   -   -   N
7     -   -   N   N   -
8     -   -   N   -   N
9     -   -   -   N   N

e) There are three blank squares remaining; place a Rook in each of the outer two and the King in the middle one.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.