Sam has closed his piano and gone to bed ... now we can talk about the real stuff of life ... love, liberty and games such as Janus, Capablanca Random, Embassy Chess & the odd mention of other 10x8 variants is welcome too
For posting: - invitations to games (you can also use the New Game menu or for particular games: Janus; Capablanca Random; or Embassy) - information about upcoming tournaments - disussion of games (please limit this to completed games or discussion on how a game has arrived at a certain position ... speculation on who has an advantage or the benefits of potential moves is not permitted while that particular game is in progress) - links to interesting related sites (non-promotional)
Lista posturilor afişate
Nu eşti autorizat sã scrii pe acest panou.Pentru a putea adãuga mesaje trebuie sã ai nivelul de (0)
I found one of the mates in 40 moves would be a draw for black to move, without capturing a piece on the first black move! Now that must be, by definition, one of the hardest positions in the database!
I looked at my numbers again from the database run:
Mate in 1 move: 2400 positions
Mate in 2 moves: 1324 positions
Mate in 3 moves: 3247 positions
I thought that was strange that the mate in 2 numbers went down from the mate in 1 counts. I would have thought that this number should steadily climb until reaching a saturation point, then it should taper down as fewer positions are resolveable near the end.
But, on second examination, this make sense.
The mate in 1 count is artificially high since it includes all of the mates in 1 executed by a Knight. Recall this mate cannot be forced, but clearly the weak side can walk into it. Fewer of these Knight mates can be forced in 2 moves, much fewer than the additional number of Bishop mates that can occur by move two.
To whisperz: There are actual two contests going on here.
Contest # 1: Post the position featuring B + N vs. lone king that you believe is the longest white to move and win. NO ANALYSIS. Just the position. I will query the database and whoever has the longest win, wins :) The winner will receive a Gothic Chess Mug once they pay for the shipping.
Contest #2: I sent to Fencer one of the 245 longest win positions. He is setting up special, private games where people can play the winning side against my database. Whoever wins the position most quickly will win a free Gothic Chess set, again, for the price of shipping.
So, the deadline is approaching. Get your entrants for contest #1 to me by Friday. We will start the tournament for the Gothic Chess set prize thereafter.
I should have the graphical user interface hooked up to my database by then.
Hey! Hey! Hey! No fair giving away the answer to Fencer! If you guys wanna turn some shady deals, you'd better do it behind closed interfaces or whatever, 'cause it makes the rest of us jealous. /Fx/
Now, now, now! Enough of this self-effacing rhetoric!! Anyone who calls himself an idiot and then promptly proceeds to demonstrate the contrary is, per se, a walking oxymoron; provided, of course, that he can walk.
So, if you will please stand to be corrected, Ed: you are obviously not an idiot, but a moron, that is, an OXYmoron.
O X Y M O R O N S O F T H E W O R L D, U N I T E!!! /Fx/
I am a little confused ... well, a lot actually. Are we to post here our proposed starting positions or are you going to set up one of the 245 40-move alternatives for us to solve by playing you? If we are to post here then I guess we should also post the solution which may have a number ways of getting there.
Now that I have the database code working (I still need to verify my latest computation) it appears that the longest win is a mate in 40 moves. In 8x8 chess, the longest win is 33 moves.
OK, the contest for guessing the longest win can officially start. Post your guess here. The person who submits the position resulting in the longest number of moves for white to win will receive a stainless steel Gothic Chess mug for the price of shipping.
And here are some stats of the latest run, assuming everything verifies properly when I do the test tomorrow:
Mate in 1 move: 2400 positions
Mate in 2 moves: 1324 positions
Mate in 3 moves: 3247 positions
Mate in 4 moves: 16136 positions
Mate in 5 moves: 49640 positions
Mate in 6 moves: 60757 positions
Mate in 7 moves: 78414 positions
Mate in 8 moves: 58897 positions
Mate in 9 moves: 57946 positions
Mate in 10 moves: 60434 positions
Mate in 11 moves: 110168 positions
Mate in 12 moves: 168635 positions
Mate in 13 moves: 254549 positions
Mate in 14 moves: 294188 positions
Mate in 15 moves: 261796 positions
Mate in 16 moves: 213463 positions
Mate in 17 moves: 171700 positions
Mate in 18 moves: 179002 positions
Mate in 19 moves: 193550 positions
Mate in 20 moves: 275013 positions
Mate in 21 moves: 421860 positions
Mate in 22 moves: 618981 positions
Mate in 23 moves: 743712 positions
Mate in 24 moves: 793462 positions
Mate in 25 moves: 768425 positions
Mate in 26 moves: 880231 positions
Mate in 27 moves: 1022307 positions
Mate in 28 moves: 1397010 positions
Mate in 29 moves: 1849137 positions
Mate in 30 moves: 2444455 positions
Mate in 31 moves: 3131093 positions
Mate in 32 moves: 3661812 positions
Mate in 33 moves: 3506075 positions
Mate in 34 moves: 2590711 positions
Mate in 35 moves: 1388359 positions
Mate in 36 moves: 482325 positions
Mate in 37 moves: 101621 positions
Mate in 38 moves: 13804 positions
Mate in 39 moves: 1788 positions
Mate in 40 moves: 245 positions
Of course my database stopped after 64 plies worth of iteration! I am an idiot!! In each byte of data, in which there are 8 bits (8 digits of 1 or 0) I needed to use 2 bits for win, loss, draw, or unknown.
unknown = 00
win = 01
draw = 10
loss = 11
That leaves only 6 bits available for distance to win, and 2 to the 6th power is 64!
So, as the database looped around, after iteration 64, nothing further could be resolved, so it stopped!
Now, either this is extremely coincidental, or I need to recompute this thing. I can get the distance to win up to 128 plies using a trick. I just divide the distance to win by 2 when I write it into the byte. If the win-loss-draw bits indicate a win, I double this number and add 1. If is it a loss, I just double the number. All wins are odd (mate in 1 ply, mate in 3 plies, etc.) since the winning side makes the last move.
Stay tuned folks, I will recompute the database today, this time doing it properly.
Subiectul: Indexing and Compressing Gothic Chess Databases
<This might be of interest to some of you. In generating a database, you have to map out all of the positions, and determine if they are wins, losses, or draws for each side to move.
Since there are 80 squares and 4 pieces, most people think you just create an array with four placeholders, one for each piece. Such an array would contain 80 x 80 x 80 x 80 entries, which is 40,960,000 positions per side to move.
This might not seem bad, but such a primitive scheme contains wasted entries. By making 80 slots available for each piece, basically you are allowing two or more pieces to be placed on the same square! For example, element 3,6,23,23 is a valid array index, but not a vaild over-the-board arrangement. Likewise element 12,4,4,31 is invalid, as well as 59,59,1,2....59,59,1,3....59,59,1,4 so you see there is a great deal of waste!
There is a technique to reduce this to setups where pieces are never on top of each other. This is called a sparsely-populated matrix. In this case, there are 80 x 79 x 78 x 77 entries per side to move = 37,957,920. It is smaller, but it makes the "lookup" procedure to locate your position a little more difficult.
In my case, the order I placed pieces on the board were black king (bk), white knight (wn), white bishop (wb), then white king (wk). So there were 80 slots for the bk, 79 remaining for the wn, etc.
So, my "indexing function" is now a formula. The result for any given position on the board is :
Notice we have an "i" on the end of all terms except the black king. These are "index" terms, not the actual square numbers. More on that later...
Each element, bk, wn, wb, and wk is a number in the range from 1 to 80. There is still one other thing to do before applying the formula. Since not all 80 square are available for the pieces based on the order the board is occupied, you need to "collapse" the indices associated with every piece other than the first one on the board.
That is, start out by letting every index element equal the corresponding square of the piece on the board.
The logic is that if a piece is placed on the board AFTER some other piece, if the new piece is on a square which is greater than the square of a previous piece, the previous piece is "taking away one slot" from the new piece. There is 1 less square available for the new piece since the previous piece has already been put on the board, but this slot is only "robbed" when the new piece is greater than the old piece. If it is on a square less than the old piece, there is really no interference.
That being said, there are still ways to reduce the size of the database. In reality, the first king need only be placed on 20 squares for pawnless databases. Any position on the board with one king constrained to the rectangle a1,e1,e4,a4 can be rotated and flipped to produce ANY position on the board with the king unconstrained.
Place a king on a8. place the other pieces anywhere you want. If you flip the board vertically, setting the rank of each piece to 9 - current rank, you will have the king on a1 and all other relative relationships the same.
King on j8? Flip the board horizontally, the king is on a8. Flip it vertically, it is on a1. This can be done for any square outside of the rectangle.
You gain a 400% reduction in the database with the offset of a more difficult lookup scheme, but in this case, the gain is worth it.
There are two other types of reduction that can be performed.
One is to constrain the king pair to eliminate adjacent king positions. These are still elements in the database, although illegal over the board.
I can generate an array of 20 x 80 elements that enumerate the legal king arrangements, 1,2,3,4...etc. I can then use this as the precursor to the indexing function formula, which would be modified slightly.
The next, and final compression that can be done is called RUN LENGTH ENCODING. This technique requires creating another database listing just the wins, losses, and draws with no move to win information. This database will compress very well in this case, where it is mostly wins and losses. This technique will allow me to throw away the drawn positions from the move to win database, which are one byte per entry. It will also allow me to throw away the adjacent kings, and every position where it is white to move and black is already in check!
This should give excellent compression results in the end. I will only have distance to win data for legal chess positions, and distance to win takes up the most disk space.
So, I will work on this during the week, and maybe the resulting databases will be small enough to be placed online here for everyone to play against.
Felix made some interesting observations with his post. Regarding the "impossible" or should I say "impractical" checkmates in the corner other than the one of the Bishop's color -- true it is that in real live play they would most likely not occur against a strong human. However, from the perspective of the computer, they must be solved, of course! While the mate in 1 scenario can be recognized, I could post the most distant win where it spirals into such a checkmate, and even from a few moves away the solution might not be readily apparent to a human. I mention this because a computer will always find the QUICKEST path to a victory. If the human player makes an imprecise move, the program will not care a whit about whether to force the knight mate or chase the king into the correct corner with the bishop (a much longer task, usually.)
So, should a human make one miscue, he could find himself embarrased at being mated by the knight!
I had not made Felix's observations about the Bishop color -- that the database switched colors and generated a whole class of mates that are otherwise virtually identical! I will have to consider this as I compress the database and make it available for others when I write the program to probe it.
Currently, there are two files, a white to move file, and a black to move file. Each one is over 36 megabytes, but I can reduce it by more than a factor of 4 when I create a better indexing scheme.
I, too, have looked at the daunting database and suspected the same as Felix. My thanks goes to him as he has done what I had hoped to do, but, I am sure, in a much more rapid process.
I think that the same applies to most of the stalemate psoitions, that they would not (some even could not) occur in actual games.
I have reviewed your geocities posting cursorilly, and would like to say "thank you"
for that. It is something I have always wondered about, and now I need wonder no longer. An interesting observation is, that while my perview was hasty and superficial, I probably spent at least as long looking it over as your computer spent generating it in all its precision.
While I cannot claim to think as a computer does, it is nevertheless significant to me, and therefore worth the mention, that several points come to mind as I see your results:
1) The solutions for checkmate as given are mostly impossible to achieve in real life play. This does not detract from their value for the computer, however, for in view of the purpose of this list being to generate the answer to my question, I acknowledge and appreciate this fact.
2) The first 148 mates are with the bishop of one color, and then starting with #149 the bishop changes color. This infers that the following 147 positions are likely a repetition or mirroring of the first 148, and so on for the other 2 corners.
3) Of these first 148, only the first 65 are with the Black king in the bishop's color of corner, the rest are on the side of the board between corners, where nobody ever achieves checkmate when the defensive king moves correctly. Others, among the first 65, may be legitimate mating positions, but inasmuch as they cannot be arrived at in real play, they would also never happen in a live game. These in question are all, therefore, practically impossible.
4) The checkmates that Capablanca exemplifies in his writings (I am not aware of any in his actual games, but if anyone knows of one, please let me know!) are to be found at positions 2, 32, 151, 195, 338, 382, 501, and 531. They are all the same arrangement of pieces, however, placed in the 4 corners, right hand and left hand, as it were.
I have tried to arrive at an answer for your challenge to find the starting position for the longest possible checkmate for these 4 pieces, and it is a daunting task, to say the least. If I give you an answer now, it would be a shot in the dark, for I do not have time to think about it right now. After studying your 8x8 solution, it seems that I am not well prepared to render an educated conclusion in regards to this question.
Although, if you are giving us a deadline, I will put mine in, just to be a participant. Please let me know if there is a time limit on this.
And thank you, again, Ed, for your diligence. /Fx/
I solved B+N vs. K today. If the database is solved correctly, it mirrors the 8x8 domain in difficulty, without a longer win. Black to move can lose in 64 plies, requiring 32 moves for both sides.
I will verify the database for correctness by probing the entire set and making sure all of the wins in "N" lead to positions that lose in "N-1" for the other side. Any break in the chain means there are errors lurking. If everything resolves, I think I did it properly.
Don't worry folks, I still have the entire graphical user interface to write for this database. Once I have it, I need to be able to write code for the program to probe it, generate moves, find the best defense, and make that best move.
I am not even there yet!
But if you want to help, I will post all 532 checkmates on the web at:
sometime this evening. I am sure you will all review every position carefully and make sure all positions are checkmates and no possible configuration is ommitted!
I'm still looking at your 8x8 solution. I thought I found some weaknesses, but I looked again and I had presumed wrong.
Yes, I still think this is an excellent study, and that to the extent that he recommends it to anyone who wishes to improve their play, Jose Raul Capablanca was, and remains a good counsel.
I have found myself too busy to drop everything and generate my answer just yet. I am very much interested, though. I hope everybody with the time to spare on this doesn't leave me in the dust because I have other duties to which I must attend. Please consider keeping a record of these proceedings, so that I will be able to see later what I missed.
Income tax, property tax, end of the month, kids are sick, Girl Scout Cookie pay-up time, new songs for Lent, fix the lawnmower, some vandal broke the back window of my Volvo station wagon (he's lucky I didn't catch him), banking, paperwork, computer upgrades, family wants to go on a vacation, another house in escrow, water pump leaks on the Plymouth, plus general maintenance. Oh yes: work, too.
I do not know what the exact position is as of yet, but when I do, yes, I will play the losing side of sole king, and everyone else will play the strong side with B+N. We may switch sides if they want a demonstration of the winning technique. I am still a ways from this. I just ran a test last night on the code to make sure everything is in place.
In the 37,957,920 positions in the database, only 9,489,480 are unique, the others are reflections and rotations. I ran the test over all of them just to make sure.
It found 532 checkmates and 17,576 stalemates. These results are both encouraging since they are a multiple of 4, and the board will produce 4 mirrors of every pawnless endgame in Gothic Chess.
I can reduce the size of the database by 400% when I get a more sophisticated lookup scheme, but for now, I just want to compute the data.
It took 15 seconds to do this first pass, which is the quickest pass. Each subsequent pass will take about 1 minute with database lookups and move generation. So, once everything is in place, it will only take about an hour to solve the database.
Then I have to write the code to look it up and translate the best move to a move on the board.
I'm not sure if I understand what you are up to. You want me to provide a set of started games with a specific positions and let people to win them?
It is possible with no changes to the current system [which is good because I am short of time for anything out of my schedule]. Just give me the required position with all moves from the start and I can create all corresponding games.
I will up the ante, if Fencer can accommodate. I will start to compute the B + N database on Saturday. When it is done, I will need a day to hook it up to some form of graphical user interface. I will probe the database for the most difficult position.
Any who wishes may enter the contest to try and win most swiftly against the database from the hardest position.
Whoever wins the quickest will receive a Gothic Chess set for the cost of the postage.
This is provided that
a) Fencer can provide some sort of temporary interface to set up positions for the purpose of this contest
b) the games remain private
c) those involved before other participate do not give away the position.
On a final note, I reserve the right to change the position if there are more than one arrangement taking the same length to win.
Is anyone interested? Send me an email to GothicChess@aol.com if you are, tell me your nickname on here, and I will post the official entrants online.
Fencer will verify that each name is unique, and that someone is not using more than one handle from the list.
I would like to thank Pawnchucker for the kind words. Had I known who Paul was when I first started playing, and that he had access to GCR, I certainly would have embarked on a different opening plan in our game :)
I am in the process of sifting through some of the old GCR issues and making the material available online. There are some other interesting items presented here as well. Here is what is up and running so far:
A discussion on the evolution of chess, including some interesting tidbits about the early days of Gothic Chess.
An interesting attacking game, showing the hairline that separates over aggression and proper defense. Ending with an Archbishop sacrifice and a nice combination.
One of the first strategic notions I uncovered early on was that a Chancellor + Bishop attack could take every piece off of the board. Here is a discourse on this lesson, ported directly from GCR.
I would suggest that anyone who really wishes to learn this game ask Mr. Ed Trice ( GothicChessPro)if he has any surplus of his Gothic Chess Review magazines laying around. Those magazines are not only enjoyable to read, but will really give one a good fundamental understanding of the game.
Hello everyone, Ed has asked me, as an old GCA member, to say a few words about Gothic Chess. I was a member of the old GCA (Gothic Chess Association) back a few years ago. Even though I never played any rated games, I do have some Gothic experience under my belt. Schaakhamster, while I appreciate the compliment, I would hardly consider myself to be a "Big Fish". Basically I know some of the what not to do's sprung from lessons of hard-knocks. Those lessons were handed to me by some of the other old GCA players who I used to battle with on a java applet site that was developed by the GCA. Sadly, the site was only in existence for a short period of time. These are the first Gothic games I've played since the GCA went into legal term-oil a few years back. It feels good to get back into it. I hope Ed can revive his old quarterly magazine "Gothic Chess Review". There was many a pearl to be plucked from those pages. Ed and a dozen or so other players whom seemed to be the core of the GCA contributed often and passionately. Unfortunately for me the GCA was in Philadelphia and I live in the Los Angeles area thus games were hard to find. Hopefully with Brian King, Gothic Chess will have a new home and a strong, solid future.
By the way, my partner and I have already done this for the game of checkers. The longest win we have takes 253 plies to finish! We verified it is impossible for any program on the planet to play it properly! Our program, called World Championship Checkers, comes with an 11-CD installer, and these CDs are compressed! Now that's a lot of data!
"I would like to know, how can you be sure that a program can find all the best moves for the defensive king?"
The database starts by placing the pieces on every square and asking the simple question: Is the side to move in checkmate? Yes, identify this as a loss in 0. No? Is the side to move in stalemate? Yes? Identify this position as a draw. No? Can the side to move win one piece? Yes? identify this position as a draw. No? There is not enough informaiton to resolve the position yet, keep looping.
Eventually, it finishes "pass #1" and has identified all of the losses and draws. Then, by definition, every position on subsequent passes must be either play into: a pre-resolved win, a pre-resolved loss, a pre-resolved draw, or remain undetermined.
In order to resolve a win, only one move for the winning side need to lead to a win. In order to resolve a loss, EVERY move for the losing side must lead to a win for the other side.
As you loop around, doing pass after pass, you have a variable that indicated whether or not you resolved something on a particular pass. After so many loops, there may be nothing left to resolve. By definition, any of the UNKNOWN positions must be draws, so you mark them as draws then you are done.
Why you consult the database in a position, here is what you do:
1. Determine if you are in a win, loss, or draw to start. This is stored in the db.
2. Generate all legal moves from the position.
3. If in a win, look up the # of moves to lose for the other side to move. Pick the smallest number you find, and make the move leading to that position.
4. If in a loss, look up the # of moves to win for the other side to move. Pick the largest number you find, and make the move leading to that position.
5. If in a draw, make sure you do not move into a loss! (It is impossible to select a move leading to a win, or it would not be a draw.)
In this fashion, the program can always play the best defensive move for the weak side, and fastest winning move for the strong side.
My quick suggestion is that all the white pieces are in one corner, King right in the corner with the bishop one out or one up (opposite colour to corner), and the black King in the opposite diagonal corner. Before the King can be maniputlated you already have 8 moves for the King, 4 for the knight and possibly 3 for the bishop ... 15 moves before game on! Of course the actual placement of the black King is not so critical so long as he can get to the corner quickly without undue interference. :)
Ed, what an amazing concept! In one move, you have gotten to the crux of this issue, that is: What are the starting positions? I was going to suggest that the 4 pieces be located in the 4 corners of the board, just to make the playing field even, and to get on with the action. But you have one-upped me on that level already! For if we were to play this out, we would have as many as 12 endings: 6 with the defensive king on a light square corner, and 6 on a dark. Some of these 12 games may work out to be insignificantly different. I will have to look at this some more, though, before I submit my contribution for your contest. I will be interested in the results!
Your offer of a thermal mug for the winner makes it all the more appealing, especially with that thermal lid thrown in. I've always wanted a thermal lid!
I would like to know, how can you be sure that a program can find all the best moves for the defensive king? Sometimes a hidden flaw leaves a program "blind" to a line of play. That's why I thought a tournament would put the theory to a practical test. /Fx/
There is a bulletin board in England where there are a few people who do not like me too much. But, the checkers program that my partner and I created, the strongest one in the world, has a reputation.
For those looking for a laugh, read the first line of the post:
I can start working on the code for the BN vs K database tonight. It will not be slick, nor fast to execute, but I can get it up and running in no time. I think the longest win is about 38 moves (for one side) so it will need to loop around 75 times (38 times for the winning side, 37 for the losing side) and I am not sure how long each iteration will take to complete.
If I generalize the code to solve any db configuration, I would need to spend at least a week making it very fast.
OK, now for a contest:
Try to set up the most difficult position for a knight and bishop to mate a lone king.
So, tell me the location of:
White King
White Bishop
White Knight
Black King
For the longest white to move and win position you think there is. The winner I will give a free stainless steel Gothic Chess commuter mug, complete with thermal lid.
Post your submissions, one per customer, with the subject heading "B+N vs. K Contest"