Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: 960 FRC start positions derived from numbers - cpp method

Author: Reinhard Scharnagl

Date: 02:47:06 06/08/04

Go up one level in this thread


On June 08, 2004 at 01:57:12, Reinhard Scharnagl wrote:

>Well, there has been a FRC position generator for nearly one year, and
>you can download the "FRC FullChess FEN Editor and Position-Generator" from:
>
>[http://homepages.compuserve.de/rescharn/Compu/fullchess7_e.html]
>(German/English)
>
>Additionally from that time I have suggested a derivation from numbers to
>well defined positions (implemented in FEN Editor) documented in (German):
>
>[http://homepages.compuserve.de/rescharn/Down/FRC_960Pos.pdf]
>
>This two pages are part of a new FRC book (German) to be published in July:
>
>[http://homepages.compuserve.de/rescharn/Down/FRC_Materialien.pdf]
>
>Regards, Reinhard.


#include <iostream>

using namespace std;

static char piece[9];
static int knight_pos[10] = { 3, 5, 9, 17, 6, 10, 18, 12, 20, 24 };

// placing a piece at a counted free position
void place_at(int nr_free, char fig)
{
  for (int pos_q = 0; ; ++pos_q) {
    if (piece[pos_q] != '\0') {
      ++nr_free;
    } else {
      if (nr_free == pos_q) {
        piece[pos_q] = fig;
        break;
      }
    }
  }
}

int main(void)
{
  cout << "960 FRC positions (0..959):" << endl << endl;

  // generate all 960 positions
  for (int nr_cnt = 0; nr_cnt < 960; ++nr_cnt) {
    int pos, nr = nr_cnt;
    // clear pieces
    for (pos = 9; --pos >= 0; )
      piece[pos] = '\0';
    // set the bright bishop by dividing 4
    piece[2*(nr % 4) + 1] = 'B';
    nr /= 4;
    // set the dark bishop by dividing 4
    piece[2*(nr % 4) + 0] = 'B';
    nr /= 4;
    // set the queen in her free field dividing 6
    place_at((nr % 6), 'Q');
    nr /= 6;
    // calculate the knight positions by nr and set them
    pos = knight_pos[nr];
    for (int mask = 16, bit = 5; --bit >= 0; mask /= 2) {
      if (mask & pos)
        place_at(bit, 'N');
    }
    // set the remaining pieces, rooks and king
    place_at(2, 'R');
    place_at(1, 'K');
    place_at(0, 'R');

    // print out the result
    cout << piece << endl;
  }

  return 0;
}


960 FRC positions (0..959):

BBQNNRKR
BQNBNRKR
BQNNRBKR
BQNNRKRB
QBBNNRKR
QNBBNRKR
QNBNRBKR
QNBNRKRB
QBNNBRKR
QNNBBRKR
QNNRBBKR
QNNRBKRB
QBNNRKBR
QNNBRKBR
QNNRKBBR
QNNRKRBB
BBNQNRKR
BNQBNRKR
BNQNRBKR
BNQNRKRB
NBBQNRKR
NQBBNRKR
NQBNRBKR
NQBNRKRB
NBQNBRKR
NQNBBRKR
NQNRBBKR
NQNRBKRB
NBQNRKBR
NQNBRKBR
NQNRKBBR
NQNRKRBB
BBNNQRKR
BNNBQRKR
BNNQRBKR
BNNQRKRB
NBBNQRKR
NNBBQRKR
NNBQRBKR
NNBQRKRB
NBNQBRKR
NNQBBRKR
NNQRBBKR
NNQRBKRB
NBNQRKBR
NNQBRKBR
NNQRKBBR
NNQRKRBB
BBNNRQKR
BNNBRQKR
BNNRQBKR
BNNRQKRB
NBBNRQKR
NNBBRQKR
NNBRQBKR
NNBRQKRB
NBNRBQKR
NNRBBQKR
NNRQBBKR
NNRQBKRB
NBNRQKBR
NNRBQKBR
NNRQKBBR
NNRQKRBB
BBNNRKQR
BNNBRKQR
BNNRKBQR
BNNRKQRB
NBBNRKQR
NNBBRKQR
NNBRKBQR
NNBRKQRB
NBNRBKQR
NNRBBKQR
NNRKBBQR
NNRKBQRB
NBNRKQBR
NNRBKQBR
NNRKQBBR
NNRKQRBB
BBNNRKRQ
BNNBRKRQ
BNNRKBRQ
BNNRKRQB
NBBNRKRQ
NNBBRKRQ
NNBRKBRQ
NNBRKRQB
NBNRBKRQ
NNRBBKRQ
NNRKBBRQ
NNRKBRQB
NBNRKRBQ
NNRBKRBQ
NNRKRBBQ
NNRKRQBB
BBQNRNKR
BQNBRNKR
BQNRNBKR
BQNRNKRB
QBBNRNKR
QNBBRNKR
QNBRNBKR
QNBRNKRB
QBNRBNKR
QNRBBNKR
QNRNBBKR
QNRNBKRB
QBNRNKBR
QNRBNKBR
QNRNKBBR
QNRNKRBB
BBNQRNKR
BNQBRNKR
BNQRNBKR
BNQRNKRB
NBBQRNKR
NQBBRNKR
NQBRNBKR
NQBRNKRB
NBQRBNKR
NQRBBNKR
NQRNBBKR
NQRNBKRB
NBQRNKBR
NQRBNKBR
NQRNKBBR
NQRNKRBB
BBNRQNKR
BNRBQNKR
BNRQNBKR
BNRQNKRB
NBBRQNKR
NRBBQNKR
NRBQNBKR
NRBQNKRB
NBRQBNKR
NRQBBNKR
NRQNBBKR
NRQNBKRB
NBRQNKBR
NRQBNKBR
NRQNKBBR
NRQNKRBB
BBNRNQKR
BNRBNQKR
BNRNQBKR
BNRNQKRB
NBBRNQKR
NRBBNQKR
NRBNQBKR
NRBNQKRB
NBRNBQKR
NRNBBQKR
NRNQBBKR
NRNQBKRB
NBRNQKBR
NRNBQKBR
NRNQKBBR
NRNQKRBB
BBNRNKQR
BNRBNKQR
BNRNKBQR
BNRNKQRB
NBBRNKQR
NRBBNKQR
NRBNKBQR
NRBNKQRB
NBRNBKQR
NRNBBKQR
NRNKBBQR
NRNKBQRB
NBRNKQBR
NRNBKQBR
NRNKQBBR
NRNKQRBB
BBNRNKRQ
BNRBNKRQ
BNRNKBRQ
BNRNKRQB
NBBRNKRQ
NRBBNKRQ
NRBNKBRQ
NRBNKRQB
NBRNBKRQ
NRNBBKRQ
NRNKBBRQ
NRNKBRQB
NBRNKRBQ
NRNBKRBQ
NRNKRBBQ
NRNKRQBB
BBQNRKNR
BQNBRKNR
BQNRKBNR
BQNRKNRB
QBBNRKNR
QNBBRKNR
QNBRKBNR
QNBRKNRB
QBNRBKNR
QNRBBKNR
QNRKBBNR
QNRKBNRB
QBNRKNBR
QNRBKNBR
QNRKNBBR
QNRKNRBB
BBNQRKNR
BNQBRKNR
BNQRKBNR
BNQRKNRB
NBBQRKNR
NQBBRKNR
NQBRKBNR
NQBRKNRB
NBQRBKNR
NQRBBKNR
NQRKBBNR
NQRKBNRB
NBQRKNBR
NQRBKNBR
NQRKNBBR
NQRKNRBB
BBNRQKNR
BNRBQKNR
BNRQKBNR
BNRQKNRB
NBBRQKNR
NRBBQKNR
NRBQKBNR
NRBQKNRB
NBRQBKNR
NRQBBKNR
NRQKBBNR
NRQKBNRB
NBRQKNBR
NRQBKNBR
NRQKNBBR
NRQKNRBB
BBNRKQNR
BNRBKQNR
BNRKQBNR
BNRKQNRB
NBBRKQNR
NRBBKQNR
NRBKQBNR
NRBKQNRB
NBRKBQNR
NRKBBQNR
NRKQBBNR
NRKQBNRB
NBRKQNBR
NRKBQNBR
NRKQNBBR
NRKQNRBB
BBNRKNQR
BNRBKNQR
BNRKNBQR
BNRKNQRB
NBBRKNQR
NRBBKNQR
NRBKNBQR
NRBKNQRB
NBRKBNQR
NRKBBNQR
NRKNBBQR
NRKNBQRB
NBRKNQBR
NRKBNQBR
NRKNQBBR
NRKNQRBB
BBNRKNRQ
BNRBKNRQ
BNRKNBRQ
BNRKNRQB
NBBRKNRQ
NRBBKNRQ
NRBKNBRQ
NRBKNRQB
NBRKBNRQ
NRKBBNRQ
NRKNBBRQ
NRKNBRQB
NBRKNRBQ
NRKBNRBQ
NRKNRBBQ
NRKNRQBB
BBQNRKRN
BQNBRKRN
BQNRKBRN
BQNRKRNB
QBBNRKRN
QNBBRKRN
QNBRKBRN
QNBRKRNB
QBNRBKRN
QNRBBKRN
QNRKBBRN
QNRKBRNB
QBNRKRBN
QNRBKRBN
QNRKRBBN
QNRKRNBB
BBNQRKRN
BNQBRKRN
BNQRKBRN
BNQRKRNB
NBBQRKRN
NQBBRKRN
NQBRKBRN
NQBRKRNB
NBQRBKRN
NQRBBKRN
NQRKBBRN
NQRKBRNB
NBQRKRBN
NQRBKRBN
NQRKRBBN
NQRKRNBB
BBNRQKRN
BNRBQKRN
BNRQKBRN
BNRQKRNB
NBBRQKRN
NRBBQKRN
NRBQKBRN
NRBQKRNB
NBRQBKRN
NRQBBKRN
NRQKBBRN
NRQKBRNB
NBRQKRBN
NRQBKRBN
NRQKRBBN
NRQKRNBB
BBNRKQRN
BNRBKQRN
BNRKQBRN
BNRKQRNB
NBBRKQRN
NRBBKQRN
NRBKQBRN
NRBKQRNB
NBRKBQRN
NRKBBQRN
NRKQBBRN
NRKQBRNB
NBRKQRBN
NRKBQRBN
NRKQRBBN
NRKQRNBB
BBNRKRQN
BNRBKRQN
BNRKRBQN
BNRKRQNB
NBBRKRQN
NRBBKRQN
NRBKRBQN
NRBKRQNB
NBRKBRQN
NRKBBRQN
NRKRBBQN
NRKRBQNB
NBRKRQBN
NRKBRQBN
NRKRQBBN
NRKRQNBB
BBNRKRNQ
BNRBKRNQ
BNRKRBNQ
BNRKRNQB
NBBRKRNQ
NRBBKRNQ
NRBKRBNQ
NRBKRNQB
NBRKBRNQ
NRKBBRNQ
NRKRBBNQ
NRKRBNQB
NBRKRNBQ
NRKBRNBQ
NRKRNBBQ
NRKRNQBB
BBQRNNKR
BQRBNNKR
BQRNNBKR
BQRNNKRB
QBBRNNKR
QRBBNNKR
QRBNNBKR
QRBNNKRB
QBRNBNKR
QRNBBNKR
QRNNBBKR
QRNNBKRB
QBRNNKBR
QRNBNKBR
QRNNKBBR
QRNNKRBB
BBRQNNKR
BRQBNNKR
BRQNNBKR
BRQNNKRB
RBBQNNKR
RQBBNNKR
RQBNNBKR
RQBNNKRB
RBQNBNKR
RQNBBNKR
RQNNBBKR
RQNNBKRB
RBQNNKBR
RQNBNKBR
RQNNKBBR
RQNNKRBB
BBRNQNKR
BRNBQNKR
BRNQNBKR
BRNQNKRB
RBBNQNKR
RNBBQNKR
RNBQNBKR
RNBQNKRB
RBNQBNKR
RNQBBNKR
RNQNBBKR
RNQNBKRB
RBNQNKBR
RNQBNKBR
RNQNKBBR
RNQNKRBB
BBRNNQKR
BRNBNQKR
BRNNQBKR
BRNNQKRB
RBBNNQKR
RNBBNQKR
RNBNQBKR
RNBNQKRB
RBNNBQKR
RNNBBQKR
RNNQBBKR
RNNQBKRB
RBNNQKBR
RNNBQKBR
RNNQKBBR
RNNQKRBB
BBRNNKQR
BRNBNKQR
BRNNKBQR
BRNNKQRB
RBBNNKQR
RNBBNKQR
RNBNKBQR
RNBNKQRB
RBNNBKQR
RNNBBKQR
RNNKBBQR
RNNKBQRB
RBNNKQBR
RNNBKQBR
RNNKQBBR
RNNKQRBB
BBRNNKRQ
BRNBNKRQ
BRNNKBRQ
BRNNKRQB
RBBNNKRQ
RNBBNKRQ
RNBNKBRQ
RNBNKRQB
RBNNBKRQ
RNNBBKRQ
RNNKBBRQ
RNNKBRQB
RBNNKRBQ
RNNBKRBQ
RNNKRBBQ
RNNKRQBB
BBQRNKNR
BQRBNKNR
BQRNKBNR
BQRNKNRB
QBBRNKNR
QRBBNKNR
QRBNKBNR
QRBNKNRB
QBRNBKNR
QRNBBKNR
QRNKBBNR
QRNKBNRB
QBRNKNBR
QRNBKNBR
QRNKNBBR
QRNKNRBB
BBRQNKNR
BRQBNKNR
BRQNKBNR
BRQNKNRB
RBBQNKNR
RQBBNKNR
RQBNKBNR
RQBNKNRB
RBQNBKNR
RQNBBKNR
RQNKBBNR
RQNKBNRB
RBQNKNBR
RQNBKNBR
RQNKNBBR
RQNKNRBB
BBRNQKNR
BRNBQKNR
BRNQKBNR
BRNQKNRB
RBBNQKNR
RNBBQKNR
RNBQKBNR
RNBQKNRB
RBNQBKNR
RNQBBKNR
RNQKBBNR
RNQKBNRB
RBNQKNBR
RNQBKNBR
RNQKNBBR
RNQKNRBB
BBRNKQNR
BRNBKQNR
BRNKQBNR
BRNKQNRB
RBBNKQNR
RNBBKQNR
RNBKQBNR
RNBKQNRB
RBNKBQNR
RNKBBQNR
RNKQBBNR
RNKQBNRB
RBNKQNBR
RNKBQNBR
RNKQNBBR
RNKQNRBB
BBRNKNQR
BRNBKNQR
BRNKNBQR
BRNKNQRB
RBBNKNQR
RNBBKNQR
RNBKNBQR
RNBKNQRB
RBNKBNQR
RNKBBNQR
RNKNBBQR
RNKNBQRB
RBNKNQBR
RNKBNQBR
RNKNQBBR
RNKNQRBB
BBRNKNRQ
BRNBKNRQ
BRNKNBRQ
BRNKNRQB
RBBNKNRQ
RNBBKNRQ
RNBKNBRQ
RNBKNRQB
RBNKBNRQ
RNKBBNRQ
RNKNBBRQ
RNKNBRQB
RBNKNRBQ
RNKBNRBQ
RNKNRBBQ
RNKNRQBB
BBQRNKRN
BQRBNKRN
BQRNKBRN
BQRNKRNB
QBBRNKRN
QRBBNKRN
QRBNKBRN
QRBNKRNB
QBRNBKRN
QRNBBKRN
QRNKBBRN
QRNKBRNB
QBRNKRBN
QRNBKRBN
QRNKRBBN
QRNKRNBB
BBRQNKRN
BRQBNKRN
BRQNKBRN
BRQNKRNB
RBBQNKRN
RQBBNKRN
RQBNKBRN
RQBNKRNB
RBQNBKRN
RQNBBKRN
RQNKBBRN
RQNKBRNB
RBQNKRBN
RQNBKRBN
RQNKRBBN
RQNKRNBB
BBRNQKRN
BRNBQKRN
BRNQKBRN
BRNQKRNB
RBBNQKRN
RNBBQKRN
RNBQKBRN
RNBQKRNB
RBNQBKRN
RNQBBKRN
RNQKBBRN
RNQKBRNB
RBNQKRBN
RNQBKRBN
RNQKRBBN
RNQKRNBB
BBRNKQRN
BRNBKQRN
BRNKQBRN
BRNKQRNB
RBBNKQRN
RNBBKQRN
RNBKQBRN
RNBKQRNB
RBNKBQRN
RNKBBQRN
RNKQBBRN
RNKQBRNB
RBNKQRBN
RNKBQRBN
RNKQRBBN
RNKQRNBB
BBRNKRQN
BRNBKRQN
BRNKRBQN
BRNKRQNB
RBBNKRQN
RNBBKRQN
RNBKRBQN
RNBKRQNB
RBNKBRQN
RNKBBRQN
RNKRBBQN
RNKRBQNB
RBNKRQBN
RNKBRQBN
RNKRQBBN
RNKRQNBB
BBRNKRNQ
BRNBKRNQ
BRNKRBNQ
BRNKRNQB
RBBNKRNQ
RNBBKRNQ
RNBKRBNQ
RNBKRNQB
RBNKBRNQ
RNKBBRNQ
RNKRBBNQ
RNKRBNQB
RBNKRNBQ
RNKBRNBQ
RNKRNBBQ
RNKRNQBB
BBQRKNNR
BQRBKNNR
BQRKNBNR
BQRKNNRB
QBBRKNNR
QRBBKNNR
QRBKNBNR
QRBKNNRB
QBRKBNNR
QRKBBNNR
QRKNBBNR
QRKNBNRB
QBRKNNBR
QRKBNNBR
QRKNNBBR
QRKNNRBB
BBRQKNNR
BRQBKNNR
BRQKNBNR
BRQKNNRB
RBBQKNNR
RQBBKNNR
RQBKNBNR
RQBKNNRB
RBQKBNNR
RQKBBNNR
RQKNBBNR
RQKNBNRB
RBQKNNBR
RQKBNNBR
RQKNNBBR
RQKNNRBB
BBRKQNNR
BRKBQNNR
BRKQNBNR
BRKQNNRB
RBBKQNNR
RKBBQNNR
RKBQNBNR
RKBQNNRB
RBKQBNNR
RKQBBNNR
RKQNBBNR
RKQNBNRB
RBKQNNBR
RKQBNNBR
RKQNNBBR
RKQNNRBB
BBRKNQNR
BRKBNQNR
BRKNQBNR
BRKNQNRB
RBBKNQNR
RKBBNQNR
RKBNQBNR
RKBNQNRB
RBKNBQNR
RKNBBQNR
RKNQBBNR
RKNQBNRB
RBKNQNBR
RKNBQNBR
RKNQNBBR
RKNQNRBB
BBRKNNQR
BRKBNNQR
BRKNNBQR
BRKNNQRB
RBBKNNQR
RKBBNNQR
RKBNNBQR
RKBNNQRB
RBKNBNQR
RKNBBNQR
RKNNBBQR
RKNNBQRB
RBKNNQBR
RKNBNQBR
RKNNQBBR
RKNNQRBB
BBRKNNRQ
BRKBNNRQ
BRKNNBRQ
BRKNNRQB
RBBKNNRQ
RKBBNNRQ
RKBNNBRQ
RKBNNRQB
RBKNBNRQ
RKNBBNRQ
RKNNBBRQ
RKNNBRQB
RBKNNRBQ
RKNBNRBQ
RKNNRBBQ
RKNNRQBB
BBQRKNRN
BQRBKNRN
BQRKNBRN
BQRKNRNB
QBBRKNRN
QRBBKNRN
QRBKNBRN
QRBKNRNB
QBRKBNRN
QRKBBNRN
QRKNBBRN
QRKNBRNB
QBRKNRBN
QRKBNRBN
QRKNRBBN
QRKNRNBB
BBRQKNRN
BRQBKNRN
BRQKNBRN
BRQKNRNB
RBBQKNRN
RQBBKNRN
RQBKNBRN
RQBKNRNB
RBQKBNRN
RQKBBNRN
RQKNBBRN
RQKNBRNB
RBQKNRBN
RQKBNRBN
RQKNRBBN
RQKNRNBB
BBRKQNRN
BRKBQNRN
BRKQNBRN
BRKQNRNB
RBBKQNRN
RKBBQNRN
RKBQNBRN
RKBQNRNB
RBKQBNRN
RKQBBNRN
RKQNBBRN
RKQNBRNB
RBKQNRBN
RKQBNRBN
RKQNRBBN
RKQNRNBB
BBRKNQRN
BRKBNQRN
BRKNQBRN
BRKNQRNB
RBBKNQRN
RKBBNQRN
RKBNQBRN
RKBNQRNB
RBKNBQRN
RKNBBQRN
RKNQBBRN
RKNQBRNB
RBKNQRBN
RKNBQRBN
RKNQRBBN
RKNQRNBB
BBRKNRQN
BRKBNRQN
BRKNRBQN
BRKNRQNB
RBBKNRQN
RKBBNRQN
RKBNRBQN
RKBNRQNB
RBKNBRQN
RKNBBRQN
RKNRBBQN
RKNRBQNB
RBKNRQBN
RKNBRQBN
RKNRQBBN
RKNRQNBB
BBRKNRNQ
BRKBNRNQ
BRKNRBNQ
BRKNRNQB
RBBKNRNQ
RKBBNRNQ
RKBNRBNQ
RKBNRNQB
RBKNBRNQ
RKNBBRNQ
RKNRBBNQ
RKNRBNQB
RBKNRNBQ
RKNBRNBQ
RKNRNBBQ
RKNRNQBB
BBQRKRNN
BQRBKRNN
BQRKRBNN
BQRKRNNB
QBBRKRNN
QRBBKRNN
QRBKRBNN
QRBKRNNB
QBRKBRNN
QRKBBRNN
QRKRBBNN
QRKRBNNB
QBRKRNBN
QRKBRNBN
QRKRNBBN
QRKRNNBB
BBRQKRNN
BRQBKRNN
BRQKRBNN
BRQKRNNB
RBBQKRNN
RQBBKRNN
RQBKRBNN
RQBKRNNB
RBQKBRNN
RQKBBRNN
RQKRBBNN
RQKRBNNB
RBQKRNBN
RQKBRNBN
RQKRNBBN
RQKRNNBB
BBRKQRNN
BRKBQRNN
BRKQRBNN
BRKQRNNB
RBBKQRNN
RKBBQRNN
RKBQRBNN
RKBQRNNB
RBKQBRNN
RKQBBRNN
RKQRBBNN
RKQRBNNB
RBKQRNBN
RKQBRNBN
RKQRNBBN
RKQRNNBB
BBRKRQNN
BRKBRQNN
BRKRQBNN
BRKRQNNB
RBBKRQNN
RKBBRQNN
RKBRQBNN
RKBRQNNB
RBKRBQNN
RKRBBQNN
RKRQBBNN
RKRQBNNB
RBKRQNBN
RKRBQNBN
RKRQNBBN
RKRQNNBB
BBRKRNQN
BRKBRNQN
BRKRNBQN
BRKRNQNB
RBBKRNQN
RKBBRNQN
RKBRNBQN
RKBRNQNB
RBKRBNQN
RKRBBNQN
RKRNBBQN
RKRNBQNB
RBKRNQBN
RKRBNQBN
RKRNQBBN
RKRNQNBB
BBRKRNNQ
BRKBRNNQ
BRKRNBNQ
BRKRNNQB
RBBKRNNQ
RKBBRNNQ
RKBRNBNQ
RKBRNNQB
RBKRBNNQ
RKRBBNNQ
RKRNBBNQ
RKRNBNQB
RBKRNNBQ
RKRBNNBQ
RKRNNBBQ
RKRNNQBB



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.