Viikkopalautus 4

Opittu
=====
* Opin tarkemmin miten Javan eri tietorakenteet on tarkemmin toteutettu, mitä luokkia ne perivät ja rajapintoja implementoivat jne.
* Opin tarkemmin miten Javan for-each rakentuu Iterablen avulla.

Aikaiseksi saatu:
=============
* Tietorakenteet edistyivät. Valmiina nyt Stack ja ArrayList, joilla kummallakin perusoperaatiot ja Javan iteraattori.
* Tietorakenteet implementoin samaan tapaan kuin Javan kirjastoissa, eli minulla on omat Collection ja List -rajapinnat sekä abstrakti AbstractCollection. Collection toteuttaa Javan valmiin Iterable-rajapinnan.
* Tekoäly käy vuorot nyt läpi järjestyksessä sen perusteella mikä vaikutti kahden syvyisen haun jälkeen parhaalta. Optimoi huomattavasti.
* Loppupelin tekoälyä parannettu muuttamalla strategia pelin loppua kohti mennessä.
* Rakennetta uusittu, vähemmän pitkiä metodeja.

Epäselvää
========
* Saako <u>mitään</u> Javan valmiita kirjastoja/algoritmeja käyttää? Esimerkiksi ZobristHash-luokassa käytän Javan BigIntegerin XOR-operaatiota.
* Testaaminen tekoälyssä on jäänyt melko vähäiseksi. Miten tekoälyä voisi hyvin testata? 

Edistyminen
==========
* Hyvässä vaiheessa. Minulla on kohtuullinen tekoäly, jonka vuorojen keskimääräinen keskimääräinen kesto on hyvä. Keskipelissä vuoro voi kyllä pahimmassa tapauksessa viedä useampia sekunteja, mutta transpositiotaulun pitäisi auttaa tähän. Käyttämäni tietorakenteet olen siis transpositiotaulua lukuunottamatta jo saanut lähes valmiiksi.

Seuraavaksi
==========
* Oma järjestämisalgoritmi
* Transpositiotaulu
* Muita optimointeja?
* Lisää testejä
* GUI, jos jaksan