Comments/Ratings for a Single Item
Umm, I did not even know this rule existed. WinBoard restricts the shuffle only to have the Bishops on different colors. I agree the rule makes no sense. I have also seen descriptions that did not allow the Bishops to be on adjacent squares. (That also seemed to make little sense.)
The Interactive Diagram would have to struggle to enforce this rule, because there is no way to tell it directly that a pair of pieces of different types would have to be placed on different square shades. As a work-around you could 'mark' the shades by piece type, by defining the nominal start position with a back rank RBRBNKNCQA, so that RNQ are on dark squares, and BKCA on light. You can then order a sequence of shuffles, RNQ,BKCA,QA,!BNRKC .
The first shuffle solely serves to put Q on a random dark square, the second to put A on a random light square, and the third then randomly swaps the two. The remaining pieces then have to be shuffled the usual way, i.e. the Bishops would have to go on opposit shades (indicated by the ! prefix).
I guess it would be useful to extend the shuffling capabilities of the Diagram with a prefix to indicate the piece should stay on the same color as it was in the nominal setup. Sy This would be indicated by #, then the shuffle instructions could be K#QC#AR!BN,QA, with a nominal setup where Q and A start on different shades.
But why the limitation to set up queen and archbishop on different coloured squares, when they can change the square colour by moving like rook resp. knight?
In the case of a real free castling there is the possibility to also have castlings, wherein the king is making only one single step. Then an encoding as e.g. Kd1 is not sufficient to distinguish a castling move from a simple King's move. Moreover in traditional chess O-O and O-O-O is used. Thus the representation should be very related to that. using O-O-x has more common parts to those traditional forms than O-x. Thus I am preferring that. By posting here I intended to investigate the status quo of writing down castling moves in variants, before I would start to implement such abilities in SMIRF's successor application Octopus.
- Sam
Well, having no suggestions yet, I made some myself: All castlings placing the King three squares from the left white side will be written as O-O-O (standard). All castlings placing the King two squares from the right white side will be written as O-O (standard). All other castlings will be written e.g. O-O-b terminated by the King's target column letter, here 'b'. Would that be acceptable?
I am just thinking it over, whether to support also free castling in SMIRF - the variation, where the King makes at least two steps, to enable an unambigious move entering via a GUI. Then a lot of other chess variants would be able to be supported. But there is a question left: how is the regular notation for those castlings? O-O and O-O-O would not at all be sufficient here. SMIRF is downloadable at: http://www.10x8.net/down/SmNewSetup.exe
Zillions' game playing style is, in comparison, sterile and drawish. To make a comparison, Zillions is Kramnik's ice and SMIRF is Topalov's fire.
P.S.: could you please specify the PGN notation concerning your 10x8 extended castling rules? Because traditional O-O or O-O-O would not be always sufficient, as I presume.
SMIRF has a very romantic style of play, making bold sacrifices. For example, in thie game against Zillions of Games, where both sides have five seconds to make a move on a Pentium Core Duo 1.5Ghz, SMIRF has the black pieces and makes several bold sacrifices before finally delivering the mating blow to white:
1. e4 Ng6 2. f3 Nd6 3. d3 Af6 4. NI3 e6 5. Ng4 Ah5 6. I4 AI6 7. Nb3 h5 8. Nc5 Qc8 9. Ixh5 Axh5 10. NI3 Af4 11. g3 Ah6 12. h3 b6 13. Ng4 Aj5 14. Nb3 Mh8 15. Af2 BI6 16. Bj4
SMIRF gets ready to make his first sacrifice.
16... Mh5!? 17. NI3 Mxj4 18. Nxj5 Bxj5 19. Ag1 Mh5 20. Kf2 Mg5 21. f4
SMIRF now sacrifices both of his knights to continue the attack on White's
King.
21... Nxe4+! 22. dxe4 Mxe4+ 23. Kg2 Nxf4+! 24. gxf4 Mxf4+ 25. Kh2 KI8 26. c3+ f5 27. MI5
SMIRF sacrifces his bishop in order to keep his attack lively.
27... j6! 28. Mxj5 Qb7 29. Bf3 Qxf3 30. Axf3 Mxf3+ 31. Kg2 Mf4+ 32. Kh2
Black can now force mate; finding this mate is left as an exercise to the
reader.
In another game, SMIRF plays ChessV, with SMIRF having the white pieces and each side given 30 seconds to decide their move on a Pentium Core Duo 1.5Ghz. Here is how that game went:
1. Ng3 e5 2. Mh3 Ne7 3. Nd3 Neg6 4. e3 d6 5. f4 exf4 6. exf4 Ad7 7. Af2 Axh3 8. Axh3 Ke8 9. Bg4 Bh4 10. Bd7+ Kd8 11. Qe1 Ne7 12. Bf2 Nhg6 13. Nf5 Bxf2 14. Kxf2 c6 15. Nxe7 Nxe7 16. Qe2 d5 17. Nc5 Ng6 18. Rje1 Kc7 19. Bxc6 Kxc6
At this point, even though White is down material, he can force mate.
The mate, again, is left as an exercise for the reader.
This is a real DEATHBLOW to computer-using German people, because it makes no distinction 'between, for example, a password cracker and a password recovery tool, or a utility designed to run denial of service attacks and one designed to stress-test a network.'
What may be worse, 'While making life more difficult for security consultants and sys admins, the new laws will, paradoxically, make it easier for police to use hacking tactics in gathering intelligence on suspects.'
Please try to avoid Germany's becoming a totalitarian country. Until this law is rescinded, I promise to drink no more Beck's--nothing but Heineken and Guinness. I hope you'll do the same.
A real DEATHBLOW to email contacts with US American people Well, because I am not interested in having my email postings 'legally' verified by the CIA, NSA and other 'peace securing' organisations, even without finding any suspicion against my person, I will no longer correspond with people from USA by email. Please try to avoid the USA to become a totalitarian country. So please join boycotting that raising freedom killing USA practice. Reinhard.
Hi Sam. Please note, that there is a rule number one (especially its second part): 1. the bishops have to be placed upon different colored squares; same rule applies to the implicite bishop pieces: queen and archbishop (aligned to FRC)
Er, .. 'the queen is the the left of the queen.' 'the king is to the left of the king,' This doesn't make sense !!
OK, I've looked at the list and can sorta see why you had 12118 setups when I had 9820 setups. First of all, I consider mirror image setups to be identical, so I have removed them by requiring the queen to be left of the king (from white's side of the board) in all of my setups. This reduces the number of possible setups from 252,000 to 126,000. I note that you consider a setup and its mirror different--which it can be given certain castling rules.
I modified your list of crc setups to only show the ones where the queen is the the left of the king. For some reason, your list of 12118 setups has 6056 setups with the queen to the left of the king, and 6062 setups with the Queen to the right of the king. Once I did this, I noted that there are some 3764 possible opening setups, where all the pawns are guarded, the king is to the left of the queen, and where there are no bishops together, that are not on your list of possible setups. I have put this list here: http://www.samiam.org/chessvariants/crc-why-not.txt This list uses 'M' for the rook + knight piece and 'A' for the knight + bishop piece. - Sam Edit: Fixed 'queen' and 'king' wording. |
Hi Sam, here is a link to all those 12118 valid CRC arrays: http://www.chessbox.de/Down/crc_valid.rar Which of them is not correct or doubled? Of course, I am not perfect, but I need a precise hint if need be, if something really should be wrong.
My program counts 9819. Here are my restrictions:
* All pawns defended
* King between rooks
* No bishops together
* No RNBQMKABNR setup (patented; M = Rook + Knight; A = Bishop + Knight)
I'm curious where the number 12,118 comes from.
- Sam
There has been a question, why SMIRF is supporting two other castling modes than merely the standard castling. Despite of that this is exceeding genuine CRC questions, here is the answer: SMIRF also is supporting Janus Chess, which needs 's' = symmetric castling, and MBC (Embassy), which needs 'm' = modern castling. CRC follows the traditioal approach to place the king after castlings either two squares distant from alpha-side or one square from omega-side.
Out of the 3 options offerred for castling in SMIRF, I chose 'symmetric' castling for Optimized Chess 8H x 10W. This destroyed my plan to compare the strengths of SMIRF and Gothic Vortex III at this game by letting them fight it out at 3 minutes per move since the latter program exclusively supports traditional or 'normal' castling as exists in Gothic Chess. It is particularly gracious of Scharnagl to support symmetric castling within SMIRF, esp. since he has stated clearly that he personally prefers normal castling. To date, I suspect that a good reason to prefer symmetric castling has not been explained. Any unique game is singular in nature, regardless of whether it exhibits an east-west symmetry or asymmetry. However, unlike E-W symmetrical games which always exist as 1 unified, opening setup, E-W asymmetrical games are split so they always exist irreducibly as 2 mirror-image opening setups which can be transposed into one another. Obviously, neither one is any more or less proper than the other. Of course, most inventors only offer 1 of these 2 mirror-image, opening setups as the asymmetrical game and most players, on the rare occasion that a choice between 2 is offerred, will always prefer to learn using just 1 of them. Ideally, the king would be perfectly centered by E-W measure so that castling would naturally be the same between the 'Mirror I' and 'Mirror II' variants of Opti Chess. Unfortunately, this is obviously impossible as the '10W' in the game title gives a strong clue. An odd, NOT even, number of files must exist for it to be possible to perfectly center any single piece E-W. The opening setups in Mirror I and Mirror II have the 2 rooks balanced perfectly, equidistantly, symmetrically E-W from the center of the board. The opening setups in Mirror I and Mirror II have the king as close to the exact E-W center of the board as possible which is unfortunately, the line dividing the 5th and 6th files. Consequently, the king rests on the 6th file square in Mirror I and the 5th file square in Mirror II. With normal castling, the king and rook will end-up on destination squares that are asymmetrical from the exact E-W center of the board within both variants AND on destination squares that are different when comparing both variants. With symmetric castling, the king and rook will end-up on destination squares that are symmetrical and identical within and between both variants. Essentially, a simple average of the results of normal castling for Mirror I & II is taken which yields whole numbers. By contrast, one can wonder (with dark humor) how the person(s) who established the standard for normal castling kept from going crazy when you realize ... In deciding exactly where to drop the pieces kingside and queenside, in turn, they had to decide whether it was more proper to round-off exactly 1/2 square's distance to zero square's distance or 1 square's distance. Even Dr. Mark Thompson could not answer that one!
optimized chess 8H x 10W http://www.symmetryperfect.com/shots/opti/
RULE TO BE ADDED After experimenting with CRC for several months I detected that there could be some special positions, which might be too advantageous for white. They belong to a subclass of positions, where the pair of bishops is neighboured. Thus I as the author have decided to add the following selection rule: 'positions with neighboured bishops have to be avoided.' There 12118 positions still are remaining.
P=1.000, N=3.053, B=3.500, K=3.722, R=5.815, A=6.858, C=8.870, Q=9.617
See for it at the: SMIRF-Site
Here is some information I have on the value of the Carrera pieces which I came up with when designing my own Carrera-esque opening setup:
Here is a table of four different derived values for the pieces, obtained from three different chess variant playing computer programs and one other source.- Sam
Piece ChessV SMIRF Zillions Aberg Pawn 1.000 1.000 1.000 1.000 Knight 2.500 3.056 2.362 3.000 Bishop 3.250 3.690 2.859 3.300 Rook 4.700 5.604 4.262 5.000 Queen 8.750 9.558 7.060 9.000 Archbishop 6.500 6.838 5.127 6.800 Marshall 8.250 8.832 6.659 8.700 The ChessV numbers were obtained by looking at the source code for ChessV. The SMIRF values, derived by Reinhard Scharnagl for his SMIRF chess computer program, were obtained from this web page. The Zillions of Games' values were obtained by looking at the values of pieces by right-clicking on them after loading a fresh Schoolbook zrf file, and before moving any pieces. Aberg's figures come from right here on the variants server.
All four agree on the following:
The verdict is still out on some other exchanges:
- A bishop is about a half-pawn more valuable than a knight.
- Two knights are worth more than a rook.
- An archbishop is worth more than two knights.
- A marshall is worth more than an archbishop.
- A queen is worth more than a marshall.
- Two rooks are worth more than a queen.
- A marshall is worth more than a rook and knight.
- A marshall is worth more than two bishops.
- A rook and knight are worth more than an archbishop.
- A rook and bishop vs. a queen.
- A rook and bishop vs. a marshall.
- A bishop and knight vs. an archbishop.
- Two bishops vs. an archbishop (Two bishops are probably worth more).
Thank you for publishing my results. Doing so implies that you have some trust in my calculation method even as it differs from your own and the English-German language barrier creates apprehension. We are all trying to reach the same destination (accurate relative piece values). We just have different reasons for taking different roads in pursuit of it. Unfortunately, the subject is just too complicated to be approached exclusively from math and geometry as applied to games. Where value judgments are necessarily required (for instance, in determining the details of a formula and what 'looks right' based only upon estimated material values of pieces in well-established games that seem to work well), philosophy becomes involved. Thereafter, the dangerous line between 'the unreasonable effectiveness of mathematics' and 'the unreasonable ineffectiveness of philosophy' (to quote Dr. Steven Weinberg) is approached. For what it is worth, your set of material values for pieces in CRC fall into the safe, flat scale between the relatively compressed scale of Trice and the relatively expanded scale of Nalls. So, if there is anything at all reliable within the work of any of the 3 of us, then your calculations for pieces in CRC are either the most accurate or the 2nd most accurate.
Hi Derek, your values now are also shown at my site at http://www.chessbox.de/Compu/schachveri1_e.html, around where you also could find my reworked piece value derivation.
material values- all pieces Capablanca Random Chess http://www.symmetryperfect.com/shots/values-capa.pdf
There now a german language description is available at wikipedia: http://de.wikipedia.org/wiki/Capablanca-Random-Chess
Hi Greg, the only chess program I have inspected ever has been an early version of GNU. I then immediately decided not to use anything from it. So SMIRF is completely self developed. But some strategies as known and documented in literature have influenced me. Actual today is SMIRF 1.28. As far as I can see SMIRF has a very different data structure. It is a flat interpreted 15x12 array. The pieces consist of bit encoded properties and are members of two double linked always sorted lists. There are two concurring pruning strategies: intelligence feed back (self invented) and controlled single nullmove (less important). There is only ONE engine playing a lot of 8x8 and 10x8 chess variants compatibly including traditional chess rules, Fischer castlings and the extended Capablanca piece set. One exceptional extension is Janus Chess with its symmetric castling. The evaluation (still very weak) is not done at quiet nodes but at deescalated nodes, which means, that also positional combinations are terminated instead of only piece exchanges.
Reinhard: Thank you for the information, and for your continued work on SMIRF! It is much easier for me to develop and test ChessV now that I have another strong Universal Chess Program against which to test it. I'll download the new version you mention and check it out soon... Also, you should be aware that the last two versions of ChessV (0.8 and 0.81) have a really bad bug which results in the program making really stupid moves on rare occasions. I've fixed this, but haven't gotten around to uploading a correction. In the next couple of days I will upload a new version... Out of curiousity, have you looked at the source code to ChessV? And, if so, has it veen of help to you? Just curious. I would also be curious to know what technologies SMIRF uses (such as null move, forward pruning, quiescent search, singular extensions, etc.) Thanks! Greg
Hello Greg Strong! I see, that you have tried to test out a more recent SMIRF version. First download the actual beta 1.26 from http://www.chessbox.de/Compu/schachsmirf_e.html . If you want to install it into an existing directory, make sure, that this would be empty (no INI file might exist there). The current beta has a free testing key including October. To start a game with white, simply enter a move. To make Smirf use the white pieces, simply press the right button (with the flash symbol). I just have played some Janus Chess games with it and ChessV, SMIRF has become really strong. ;-) Reinhard.
Hi Greg, > I have been trying this version, but have some difficulties... > I have been using Janus Chess for testing. yes, from time to time there is a fully testable Smirf version, which is only time limited by an attached testing key. > First, no matter which timing mode I use, the program always seems > to make its move in less than a second. That is Smirf's behaviour when the testing key is wrong or timed out. The current beta package has a working key valid until end of September. So I prosume you are not testing the current package or have it repeatedly installed into an already existing Smirf folder where an outtimed key has been stored in its ini file (and would not be replaced). Thus repeat the installing procedure but delete any existing Smirf INI file before. In the reduced mode you are describing, Smirf abilities still could be inspected, but thinking time and some abilities are reduced. This is because Smirf is intended to become Shareware later. > Second problem is that I do not see where you decide which side(s) > are computer controlled. After a manual move is entered, it starts > thinking, but I see no way to make the computer play itself... Well, Smirf does not play against itself. It is planned to install a special form of remote playing ability to enable playing with other 10x8 chess programs. That would help to also test different engine versions to hopefully detect progresses. There is a check box 'automatic'. Switch it off, and you could enter as much moves as you like without Smirf's answering. You also could switch into the edit mode and e.g. switch the active color. > Otherwise, the program looks nice. Keep up the good work! Same for your ChessV! I hope for this there would be a remote protocol installed, too (and a beep). Ed Trice has proposed one, but it seems not to be sufficiently flexible to also support other 10x8 Chess variants. Thus I try to implement a compatible protocol superset. Do you have matching ideas? Regards, Reinhard.
I have been trying this version, but have some difficulties... I have been using Janus Chess for testing. First, no matter which timing mode I use, the program always seems to make its move in less than a second. Second problem is that I do not see where you decide which side(s) are computer controlled. After a manual move is entered, it starts thinking, but I see no way to make the computer play itself... Otherwise, the program looks nice. Keep up the good work!
a) CRC (Capablanca Random Chess) will be supported soon by http://www.brainking.com . b) There is a time limited Beta of SMIRF FullChess program (full functional) playing a lot of variants including CRC, for download see http://www.chessbox.de/Compu/schachsmirf_e.html . Regards, Reinhard Scharnagl.
A) Sorry for not having accomplished to update the CRC content here. B) There is a first public beta of Smirf (about 1.3 MB), unrestricted until 2005/06/30. Of course this chess program is subject to further improvements: http://de.geocities.com/rsmuenchen/ The program should be handled intuitively. But also notice: a) the board could be turned by clicking on a corner of the board, b) in edit mode castling rights easyly could be switched by clicking the file letters near the involved rooks. This simplifies a consistent management of castling rights especially with Chess960 positions (maybe an idea for Arena), c) you will find possibilities to select how move possibilities should be shown or not in the help menu, d) double clicking on a move of the list of possible moves will show that move and preselect it, e) double clicking on a move of the game list will reposition the game to the related situation.
Today I have sent in an updated version of the CRC proposal. I hope that it could replace the old initial version soon and that it then would be much better to read. I want to thank here Mr. Bodlaender and all others, who help together to publish those new proposals within this 10-chess contest and for the big efforts they are putting into this huge chessvariants project! P.S.: Are there any ideas how to accomplish changed contents to become exchanged here on this site?
To Fergus Duniho: Well, if that is indeed the historic array of Bird, then a Hamming distance of at least three (as I have specified) would be more than sufficient. So I would not change that demanded difference of three. I would like to keep the Hamming distance, because shifting a group of pieces has an immense effect on the properties of a starting array. And I think that the so created valid CRC arrays obviously are distinct from GC.
To Fergus Duniho: you are obviously unsure on the grade of distinctness between valid CRC arrays and the GC starting position. So let us do a historic approach and try to calculate the distance between GC and historic 10x8 starting arrays as from Carrera, Bird or Capablanca. I think that there are more than three reported arrays from those people. When it has been possible to patent GC being only slightly different to those positions, it should be sufficient to demand only the smallest there occurring distance. Comparing the GC array 'RNBQCKABNR' to one reported as from Bird 'RNBCQKABNR' there is a Hamming distance of only two. But I am not sure, if this Bird's array has been specified that way - I am missing still the original source. If the smallest distance indeed should be greater than three, the code I have supplied has to be changed appropriately. May be variant experts could help to solve that question doubtlessly.
//======================================== // Valid CRC / Chess960 Position generator //======================================== // Reference Implementation, (C) 2005 by // Reinhard Scharnagl, Munich, Germany //---------------------------------------- // Correction 2005-Feb-28 (GC-Nearness) //======================================== #include < string.h> #include < stdio.h> #define TXT_LIM 160 static char FenZone[TXT_LIM]; // insert a symbol into FEN-String // ------------------------------- // color could be: // col < 0 => not specified // col == 0 => bright square // col == 1 => dark square void PlaceIntoFEN (int cntFree, char symbol, int fieldColor) { for (int pos = 0, free = 0; ; ++pos) { if (fieldColor < 0 || ((fieldColor ^ pos) & 1)) { if (!FenZone[pos] && cntFree == free++) { FenZone[pos] = symbol; break; } } } } // generating of FEN strings // ------------------------- // nr could be // nr >= 0 creating Chess960 position (1 ... 960) // nr < 0 creating CRC position (1 ... 48000) const char *GetFen(int nr) { // knight distributions over 5 free squares static const int knight_pos[10] = { 3, // xx--- (binary encoded) 5, // x-x-- 9, // x--x- 17, // x---x 6, // -xx-- 10, // -x-x- 18, // -x--x 12, // --xx- 20, // --x-x 24 // ---xx }; // clear the working area int bit, pos = TXT_LIM; while (--pos >= 0) { FenZone[pos] = '\0'; } // test whether CRC is requested bool isCRC = (nr <= 0); if (isCRC) { nr = -nr; bool q_first = ((nr % 2) != 0); nr /= 2; PlaceIntoFEN(nr % 5, q_first ? 'q' : 'a', 0); nr /= 5; PlaceIntoFEN(nr % 5, q_first ? 'a' : 'q', 1); nr /= 5; } PlaceIntoFEN(nr % 4, 'b', 0); nr /= 4; PlaceIntoFEN(nr % 4, 'b', 1); nr /= 4; PlaceIntoFEN(nr % 6, isCRC ? 'c' : 'q', -1); nr /= 6; pos = knight_pos[nr % 10]; for (bit = 5; --bit >= 0; ) { if ((pos & (1 << bit)) != 0) PlaceIntoFEN(bit, 'n', -1); } PlaceIntoFEN(2, 'r', -1); PlaceIntoFEN(1, 'k', -1); PlaceIntoFEN(0, 'r', -1); int width = isCRC ? 10 : 8; char *pC = &FenZone[width]; *pC++ = '/'; for (pos = width; --pos >= 0; ) { *pC++ = 'p'; } for (pos = 4; --pos >= 0; ) { *pC++ = '/'; if (width >= 10) { *pC++ = '1'; } *pC++ = (char)('0' + width % 10); } *pC++ = '/'; for (pos = width; --pos >= 0; ) { *pC++ = 'P'; } *pC++ = '/'; for (pos = 0; pos < width; ++pos) { *pC++ = FenZone[pos] ^ ('a'^'A'); } strcpy(pC, ' w KQkq - 0 1'); return FenZone; } // check if FEN is valid for CRC // ----------------------------- bool IsValidCRC(const char *pFen) { // to be avoided GC position static const char *gcArray = 'rnbqckabnr'; // pawn covering pieces (like a rook) static const char *covNear = 'rcqk'; // pawn covering pieces (like a bishop) static const char *covDiag = 'baqk'; // pawn covering pieces (like a knight) static const char *covDist = 'nac'; int size = (int)(strchr(pFen, '/') - pFen); int diff = 0; for (int n = size; --n >= 0; ) { // different to GC? if (pFen[n] != gcArray[n]) { ++diff; } // unprotected pawns? if (strchr(covNear, pFen[n])) continue; if ((n+1) < size && strchr(covDiag, pFen[n+1])) continue; if ((n-1) >= 0 && strchr(covDiag, pFen[n-1])) continue; if ((n+2) < size && strchr(covDist, pFen[n+2])) continue; if ((n-2) >= 0 && strchr(covDist, pFen[n-2])) continue; return false; } // GC-near position? if (diff < 3 && size == (int)strlen(gcArray)) { return false; } return true; } // test output // ----------- int main(void) { puts('\nfirst Chess960 positions'); for (int nrFRC = 0; ++nrFRC <= 10; ) { printf('(%03d) %s\n', nrFRC, GetFen(nrFRC)); } puts('\nfirst CRC positions'); int cntValid = 0; for (int nrCRC = 0; ++nrCRC <= 48000; ) { const char *pFEN = GetFen(-nrCRC); bool valid = IsValidCRC(pFEN); if (nrCRC <= 32) { printf('(%05d %s) %s\n', nrCRC, valid ? 'ok' : '--', pFEN); } if (valid) { ++cntValid; } } printf('\n%d valid CRC arrays\n', cntValid); return 0; }
To Mark Thompson: three always is a good number. We have so much possible positions in CRC, so it does not hurt to skip some to avoid any conflicts with Gothic Chess. Live and let live. To Fergus Duniho: it seems as if you would use a very complex method to detect invalid starting positions. I will add a more simple method in short to the reference code I have posted here yesterday. Thus one will be able to see, that generating valid CRC positions only is neither a run time problem nor too complex to be programmed.
//===================================== // CRC / Chess960 Position Generator //===================================== // reference implementation (C) 2005 by // Reinhard Scharnagl, Munich, Germany //===================================== #include < string.h> #include < stdio.h> #define TXT_LIM 160 static char FenZone[TXT_LIM]; // insert a symbol into FEN-String // ------------------------------- // color could be: // col < 0 => not specified // col == 0 => bright square // col == 1 => dark square void PlaceIntoFEN (int cntFree, char symbol, int fieldColor) { for (int pos = 0, free = 0; ; ++pos) { if (fieldColor < 0 || ((fieldColor ^ pos) & 1)) { if (!FenZone[pos] && cntFree == free++) { FenZone[pos] = symbol; break; } } } } // generating of FEN strings // ------------------------- // nr could be // nr >= 0 creating Chess960 position (1 ... 960) // nr < 0 creating CRC position (1 ... 48000) const char *GetFen(int nr) { // knight distributions over 5 free squares static const int knight_pos[10] = { 3, // xx--- (binary encoded) 5, // x-x-- 9, // x--x- 17, // x---x 6, // -xx-- 10, // -x-x- 18, // -x--x 12, // --xx- 20, // --x-x 24 // ---xx }; // clear the working area int bit, pos = TXT_LIM; while (--pos >= 0) { FenZone[pos] = '\0'; } // test whether CRC is requested bool istCRC = (nr <= 0); if (istCRC) { nr = -nr; bool q_first = ((nr % 2) != 0); nr /= 2; PlaceIntoFEN(nr % 5, q_first ? 'q' : 'a', 0); nr /= 5; PlaceIntoFEN(nr % 5, q_first ? 'a' : 'q', 1); nr /= 5; } PlaceIntoFEN(nr % 4, 'b', 0); nr /= 4; PlaceIntoFEN(nr % 4, 'b', 1); nr /= 4; PlaceIntoFEN(nr % 6, istCRC ? 'c' : 'q', -1); nr /= 6; pos = knight_pos[nr % 10]; for (bit = 5; --bit >= 0; ) { if ((pos & (1 << bit)) != 0) PlaceIntoFEN(bit, 'n', -1); } PlaceIntoFEN(2, 'r', -1); PlaceIntoFEN(1, 'k', -1); PlaceIntoFEN(0, 'r', -1); int width = istCRC ? 10 : 8; char *pC = &FenZone[width]; *pC++ = '/'; for (pos = width; --pos >= 0; ) { *pC++ = 'p'; } for (pos = 4; --pos >= 0; ) { *pC++ = '/'; *pC++ = (char)('0' + width % 10); } *pC++ = '/'; for (pos = width; --pos >= 0; ) { *pC++ = 'P'; } *pC++ = '/'; for (pos = 0; pos < width; ++pos) { *pC++ = FenZone[pos] ^ ('a'^'A'); } strcpy(pC, ' w KQkq - 0 1'); return FenZone; } // test output int main(void) { puts('first Chess960 positions'); for (int nrFRC = 0; ++nrFRC <= 5; ) { puts(GetFen(nrFRC)); } puts('first CRC positions'); for (int nrCRC = 0; ++nrCRC <= 5; ) { puts(GetFen(-nrCRC)); } return 0; }
Why does each Pawn need to be defended at the initial set-up? This seems to be an arbitrary rule. There are many good Chess games where each and every Pawn is not defended at the start. In fact, these un-defended Pawns can create a nice area of early contention in play. Is there an actual 'flawed' setup, resulting in the loss of the game for one or the other player?
Fischer Random Chess has the 960 legal starting positions numbered, and has the details on how to find a position from it's number, and how to find the number based on the position. Capablanca Random Chess could benefit from such a system. Besides making it easier to identify starting positions, it would also solve Fergus' present dilema. If a position can be determined from a position number, all that would be required is generation a random number in the valid range. For a good description of how FRC identifies positions by number, see: http://frcec.tripod.com/fischerrandomchessstartingpositions/
Reinhard, I've worked up an example with two crossed spears and a pair of wings flanking a halo. You should be able to view it below: http://users3.ev1.net/~llsmith/home/angel_w.gif
Just a small aesthetic observation about the graphic for the Archangel. Swords being short-range weapons, angels are also known to carry spears which have longer range. To carry over the motif from the Centaur, it could be a horseshoe with two crossed spears. Or the angelic theme might be further emphasized with a pair of wings and two crossed spears.
To Greg Strong: of course you are right with your historical hints. There might be some remarks to be added in the CRC description. The CRC text should be extended, if there would be enough interested readers. To Greg Strong and David Paulowich: indeed there are more traditional names for C (Chancellor) and A (Archbishop). But those names do not correspond to the pieces: nor to their gaits nor to their symbols. I have tried to design more intuitive gait related symbols and noticed, that the names would not be helpful for newcomers to the Capablanca extended piece set. So I proposed names (partially already used differently in other context) to enhance the readability of CRC board positions to interested people. But that approach is only a suggestion, carefully keeping the same initial letters e.g. to stay compatible within X-FEN. To all posters here at CRC until now: thank you for your interest and encouraging words!
Nice to see you moving forward with your dream. Best regards!
Very nice! The author has done an excellent job of defining a Fischer randomization system for Capablanca's Chess (actually this piece mix goes back to the 1600s with D. Pietro Carrera -- see Carrera's Chess.) It is obvious to me that the design has been carefully considered from both a game-designer's perspective and a software developer's perspective.
I'm not sure I like the idea of renaming the pieces, though. There are already too many different names for these pieces, and I think the goal should be to standardize the names, and I believe Capablanca's names of Archbishop and Chancellor are probably the best choices.
76 comments displayed
Permalink to the exact comments currently displayed.
I have made an attempt to implement Fischer castling in the Interactive Diagram. There is no special XBetza notation for this; a shuffle game has to be specified with a 'nominal' setup. This setup defines (together with the XBetza normal castling definition) where the king must end up, and what the castling partners are (the corner pieces, which must be of equal type). If such a castling is defined, any shuffle that involves the king will then be restricted to make the king end up between the castling partners, and will activate Fischer castling.
To support the shuffle rules of Capablanca Random Chess I enhanced the Diagram's shuffle feature: An exclamation point before a piece in a shuffle specification now either means that pieces of that type should be equally distributed over square shades, or, when there only is one such piece, that it must remain on the shade it is already on. This way Q and A can be forced on different shades by putting them so in the nominal position, and order an extra shuffle of only Q and A to determine which one goes on which shade. The shuffle specs are thus QA,N!BR!AC!QK.
Initially a Diagram always shows the nominal position; there is no spontaneous shuffle. To shuffle you have to press 'Restart' in the AI control bar.
[Editor's Note: Disabling this diagram to keep it from interfering with the one on the page.]