Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Minimum Number of Bytes - encode castling within kings coordinates

Author: Reinhard Scharnagl

Date: 20:58:19 12/23/03

Go up one level in this thread


On December 23, 2003 at 23:33:39, KarinsDad wrote:

>On December 23, 2003 at 22:22:25, Reinhard Scharnagl wrote:
>
>>Hi KarinsDad,
>>
>>a comprehensive solution always would be a better solution.
>>
>>There is a solution (complex translation table), which I would like to be
>>substituted by a more intuitive, before I would fix that idea then.
>>
>>Your solution (in my opinion) is no solution. Because if one king is able
>>to castle, the other is not and HAS BEEN PLACED SOMEWHERE on the board, his
>>coordinate (different from original position) vanishes by your encoding.
>>
>>Reinhard.
>
>Yes of course. I was only listing some of the cases.
>
>However, it does not change the number of bits needed.
>
>In 12 bits (4096 possibilities), there are 484 illegal positions (i.e.
>wka1/bka1/bka2/bkb1/bkb2 as 4 examples). To calculate this, it is white king in
>4 corners * 4 black illegal king squares. Plus, white king on 24 edge squares *
>6 black illegal king squares. Plus, white king on 36 inner squares * 9 black
>illegal king squares. 4*4 + 24*6 + 36*9 = 484.
>
>Each of the 3612 legal positions (4096-484) all represent themselves where
>neither king can castle.
>
>The remaining cases are:
>
>1) white king on e1, black king not on d1/d2/e1/e2/f1/f2/e8 = 57 * 3 possible
>white castling possibilities (the white cannot castle possibility for all legal
>black squares has already been taken care of) for a total of 171 cases.
>
>2) black king on e8, white king not on d8/d7/e8/e7/f8/f7/e1 = 57 * 3 possible
>black castling possibilities (the black cannot castle possibility for all legal
>white squares has already been taken care of) for a total of 171 cases.
>
>3) white king on e1, black king on e8, 15 possible castling cases (the cannot
>castle for both kings on e1/e8 respectively case has already been handled).
>
>For a total of 3612 + 171 + 171 + 15 = 3969 cases which can be stored in 12 bits
>(3969 out of 4096).
>
>When doing position compression though, the idea is to basically ignore how
>difficult it is to get the data into or out of the bits (that can be solved once
>the compression encoding schema is determined), but merely to figure out which
>compression does it to the smallest number of bits.
>
>
>Granted, the encoding/decoding algorithms are not as simple I stated earlier,
>but you can actually do them in code without too much difficulty (and without a
>bunch of if/else or switch statements). For example, one way is to create a 2
>dimensional 64x64 array of booleans (i.e. transposition table) for all
>white/black pairs and set the booleans to true if legal and false if not legal,
>then iterate through the illegal boolean array pairs in some set order of legal
>castling positions to assign the rest. When you get to your current "at least
>one king can castle position" (regardless of which case it is) in the list
>(based on the iteration order you picked), you have your encoded number. Do the
>exact same calculation for decoding (when the number matches the 12 bits, you
>know which case it is ...).

Hi KarinsDad,

you are describing just the big translation table, I have spoken of.

I will try to explain the nature of a solution I would like to have
(which is still not complete and in devlopment).

Suppose the castling rigths are the following bits: bwl, bwr, bbl, bbr.

a) if both kings are at original place,
   encode Kw = kb = (bwl, bwr, 0, bbl, bbr, 0)
b) if only the white king is at original place,
   1) O-O only -> place him immediately over or under the black king
   2) O-O-O only -> place him immediately right or left to the black king
   3) both castlings -> ... still no idea, sorry
c) if only the black king is at original place,
   1) O-O only -> place him immediately NW or SE the white king
   2) O-O-O only -> place him immediately NE or SW to the white king
   3) both castlings -> ... still no idea, sorry

That this moment is the direction I am thinking of a solution.

Regards, Reinhard.

P.S.: my main goal in creating a compact encoding is not to reach the
      ultimative shortest one, but to become able to make a good estimation
      on the number of all legal possible chess positions.



This page took 0.01 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.