Toto je starší verze dokumentu!
Závisí na ukládání situací (uzlů):
Na zrychlení je potřeba mít předgenerované tabulky
Na zakodovani celé šachovnice do jednoho integeru v jave (32 bitů) by šlo něco takovýho:
//Čísla označují pozice na na šachovnici 0..6*0..6 //Pořadí jednotlivých figurek se nesmí měnit //V co je proměněnej pěšák je vyjádřený proměnou mutace - stavy: // 0(nic),1(dama),2(jezdec) //Poupraveno - nesmí měnit na střelce int BK=9,BV=23,Bp=7,CK=6,CV=40,mutace=0; //Naskládám to tam odzadu //Posun o 6 pozic tu je proto, že do 6 pozic nacpu číslo velké 0..63(šachovnice má 0..48,49) int hash = mutace; hash = (hash<<6) | BK; hash = (hash<<6) | BV; hash = (hash<<6) | Bp; hash = (hash<<6) | CK; hash = (hash<<6) | CV;
//A pak to zase vyzvednu, je potřeba vyzvedávat v opačném pořadí! //Maska 63 je v binárním zápisu (26 nul)111111, aby se vytáhlo posledních 6 bitů CV = hash & 63; hash = hash>>>6; CK = hash & 63; hash = hash>>>6; Bp = hash & 63; hash = hash>>>6; BV = hash & 63; hash = hash>>>6; BK = hash & 63; hash = hash>>>6; mutace = hash & 3;
Zkoušel si někdo udělat generátor tahů? Předpokládám že je nemožné ukládat si všechny možný tahy i v závislosti na rozestavění ostatních figurek - jestli blokují políčka. Jak se potom efektivně zjištuje například u střelce kam může a kam ne ?
Jediné co mě napadlo je zkusit cyklit od střelce směrem doleva nahoru, doprava nahoru atd. dokud nenarazí na jinou figurku/konec šachovnice. Tohle by šlo ještě vylepšit tím, že by se rovnou v poli reprezentujícím šachovnici označili pozice ostatních figurek a při tom cyklení by se jen koukalo jestli se nenarazilo na označený pole - odpadnou tak v nejhorším případě 4 testy na každé pole, bude je 1 test.