diff --git a/README.md b/README.md index 635a20f..fddb40d 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,15 @@ Selvittää Blackjack pelin jakajan käden todennäköisyydet annetulle korttipakalle. ## Versio 1.0 -Ensimmäinen toimiva versio on ladattavissa. Julkaisuun kuuluu .jar-tiedosto, käyttöohje (jonka voi lukea GitHubissakin) ja esimerkkisyötetiedosto. \ No newline at end of file +Ensimmäinen toimiva versio on ladattavissa. Julkaisuun kuuluu .jar-tiedosto, käyttöohje (jonka voi lukea GitHubissakin) ja esimerkkisyötetiedosto. + +## Versio 1.1 +Loppupalautusversio. + + +Verrattuna 1.0 versioon: + + +* prosentin murto-osan optimoidumpi. +* bugikorjauksia. Tulosten ei enää pitäisi mennä väärin, kun otetaan absurdi määrä merkitseviä numeroita. +* Ääkköset on poistettu, sillä ne aiheuttivat kryptisiä ongelmia. \ No newline at end of file diff --git "a/dokumentaatio/K\303\244ytt\303\266ohje.md" "b/dokumentaatio/K\303\244ytt\303\266ohje.md" index 8e73edd..427591e 100644 --- "a/dokumentaatio/K\303\244ytt\303\266ohje.md" +++ "b/dokumentaatio/K\303\244ytt\303\266ohje.md" @@ -9,13 +9,13 @@ java -jar BJKA.jar -Oletusarvoisesti ohjelma etsii tiedostoa syöte.txt hakemistosta, jossa olet. +Oletusarvoisesti ohjelma etsii tiedostoa syote.txt hakemistosta, jossa olet. Jos haluat käyttää jotain muuta syötettä, anna syötetiedosto argumenttina. Esim. ``` -java -jar BJKA.jar toinen_syöte.txt +java -jar BJKA.jar toinen_syote.txt ``` ## Syötetiedoston sisältö diff --git a/dokumentaatio/Testausdokumentti.md b/dokumentaatio/Testausdokumentti.md index e5d9c66..01f198d 100644 --- a/dokumentaatio/Testausdokumentti.md +++ b/dokumentaatio/Testausdokumentti.md @@ -11,7 +11,12 @@ Testi siis painottaa kaikkia alkukortteja yht Käytetyllä pakalla ei ole suurta merkitystä suorituskykyyn. Pakka voi siis olla mikä tahansa. -Suorituskykytestin suorittaminen kesti ohjelmalta ajan väliltä 5ms - 10ms, mutta normaalit ajat olivat väliltä 6ms - 8ms. +~~Suorituskykytestin suorittaminen kesti ohjelmalta ajan väliltä 5ms - 10ms, mutta normaalit ajat olivat väliltä 6ms - 8ms.~~ + + +Suorituskykytesti kestää kotikoneellani n. 4ms +- 0.2ms. +Aika on huomattavasti nopeampi, kuin optimoimattoman, Javan valmiita tietorakenteita käyttävän toteutuksen ajat. +Keskimäärin optimointi säästää arviolta 40% suoritusajassa. # Yksikkötestit diff --git a/dokumentaatio/Toteutusdokumentti.md b/dokumentaatio/Toteutusdokumentti.md index 5211f65..c0543f7 100644 --- a/dokumentaatio/Toteutusdokumentti.md +++ b/dokumentaatio/Toteutusdokumentti.md @@ -20,7 +20,7 @@ TapahtumaSolmu koodataan taulukkoon kokonaislukukoodin avulla. Jonoon merkitää Kokonaislukukoodi saadaan antamalla jokaiselle jakajan käden kortille lukuarvo kortin arvon perusteella (alkukorttia lukuunottamatta) ja laskemalla nämä lukuarvot yhteen. Korttien arvoja vastaavat lukuarvot on valittu siten, että erilaisten käsien lukuarvojen summat eivät ole samat millään jakajan käsillä, joiden arvo on 16 tai pienempi. -Käytännössä keksin ne yritys-erehdys menetelmällä. +~~Käytännössä keksin ne yritys-erehdys menetelmällä.~~ optimisaatio.py-apulohjelma selvitti sopivat arvot. Lähtösolmu on käsiteltävä erikseen Blackjack-erikoistapauksen takia. Blackjack todennäköisyydet lasketaan kovakoodatulla logiikalla lähtösolmun käsittelyssä. diff --git a/maven-BJKA/src/main/java/bjka/Analysoija.java b/maven-BJKA/src/main/java/bjka/Analysoija.java index 73bc888..d731df0 100644 --- a/maven-BJKA/src/main/java/bjka/Analysoija.java +++ b/maven-BJKA/src/main/java/bjka/Analysoija.java @@ -13,23 +13,23 @@ public Analysoija() { } /** - * Laskee Blackjack jakajan käden todennäköisyydet. + * Laskee Blackjack jakajan kaden todennakoisyydet. * - * @param alkukortti Jakajan käden ensimmäinen kortti. - * @param pakka Jäljellä oleva pakka, josta kortit nostetaan. Alkukortti ei - * sisälly pakkaan. - * @return Tulosvektori, joka sisältää jakajan käden todennäköisyydet - * seuraavassa järjestyksessä. [17, 18, 19, 20, 21, bust, BJ] + * @param alkukortti Jakajan kaden ensimmainen kortti. + * @param pakka Jaljella oleva pakka, josta kortit nostetaan. Alkukortti ei + * sisally pakkaan. + * @return Tulosvektori, joka sisaltaa jakajan kaden todennakoisyydet + * seuraavassa jarjestyksessa. [17, 18, 19, 20, 21, bust, BJ] */ public double[] analysoi(int alkukortti, Pakka pakka) { - //Päättyneet tapahtumaketjut merkataan tulosvektoriin. + //Paattyneet tapahtumaketjut merkataan tulosvektoriin. double[] tulos = new double[]{0, 0, 0, 0, 0, 0, 0}; TapahtumaSolmu alkuSolmu = new TapahtumaSolmu(alkukortti, alkukortti == 1, 1.0, pakka); - // Jonoon lisätään tapahtumasolmut, jotka jatkuvat vielä. - //Jonon koko selvitettiin kokeilemalla yhä pienempiä arvoja, kunnes testit eivät enää menneet läpi. + // Jonoon lisataan tapahtumasolmut, jotka jatkuvat viela. + //Jonon koko selvitettiin kokeilemalla yha pienempia arvoja, kunnes testit eivat enaa menneet lapi. Jono jono = new Jono(91); // Tapahtumasolmut talletetaan Map-tietorakenteeseen, jotta alkion olemassaolon tarkistaminen on nopeampaa. O(1) vs. O(n) @@ -37,7 +37,7 @@ public double[] analysoi(int alkukortti, Pakka pakka) { int alkukoodi = 0; - // Käsitellään ensimmäinen tapahtumasolmu erikseen BJ-erikoistapauksen takia. + // Kasitellaan ensimmainen tapahtumasolmu erikseen BJ-erikoistapauksen takia. double[] alkuTVektori = alkuSolmu.laskeTodennakoisyydet(); if (alkuSolmu.getAssa()) { tulos[6] += alkuTVektori[0]; @@ -59,7 +59,7 @@ public double[] analysoi(int alkukortti, Pakka pakka) { kasitteleTapahtuma(i, alkuTVektori[i], alkukoodi, alkuSolmu, jono, map, tulos); } - // Silmukka käy läpi kaikki mahdolliset tapahtumaketjut. + // Silmukka kay lapi kaikki mahdolliset tapahtumaketjut. while (!jono.isEmpty()) { int seuraavaKoodi = jono.get(); kasitteleTapahtumaHaara(seuraavaKoodi, jono, map, tulos); @@ -69,28 +69,28 @@ public double[] analysoi(int alkukortti, Pakka pakka) { } /** - * Käsittelee yhden lahtoSolmun lapsista. Jos lapsi on päätössolmu, se + * Kasittelee yhden lahtoSolmun lapsista. Jos lapsi on paatossolmu, se * merkataan tulosvektoriin. Jos lapsi on tapahtumaSolmu, se tallennetaan * map ja jono rakenteisiin. * * @param tapahtuma uusi kortti, joka nostettiin - * @param tapahtumaTodennakoisyys Edellisen solmun todennäköisyyden ja - * tapahtuman todennäköisyyden tulo. + * @param tapahtumaTodennakoisyys Edellisen solmun todennakoisyyden ja + * tapahtuman todennakoisyyden tulo. * @param lahtokoodi Edellisen solmun kokonaislukukoodi * @param lahtoSolmu Edellinen solmu * @param jono Jono, johon uusien solmujen koodit tallennetaan * @param map Taulukko, johon uudet solmut tallennetaan - * @param tulos Tulosvektori, johon uudet päätössolmut merkataan + * @param tulos Tulosvektori, johon uudet paatossolmut merkataan */ private void kasitteleTapahtuma(int tapahtuma, double tapahtumaTodennakoisyys, int lahtokoodi, TapahtumaSolmu lahtoSolmu, Jono jono, TapahtumaSolmu[] map, double[] tulos) { - // Todennäköisyysvektoreissa 10 on koodattu nollaksi. Käännetään takaisin. + // Todennakoisyysvektoreissa 10 on koodattu nollaksi. Kaannetaan takaisin. if (tapahtuma == 0) { tapahtuma = 10; } int uusiArvo = lahtoSolmu.getArvo() + tapahtuma; - // Jos jakaja jää, kirjataan tulos ja käsittely päättyy. + // Jos jakaja jaa, kirjataan tulos ja kasittely paattyy. if (lahtoSolmu.getAssa() || tapahtuma == 1) { if (uusiArvo >= 7 && uusiArvo <= 11) { tulos[tulosIndeksi(uusiArvo + 10)] += tapahtumaTodennakoisyys; @@ -108,44 +108,44 @@ private void kasitteleTapahtuma(int tapahtuma, double tapahtumaTodennakoisyys, i boolean uusiAssa = lahtoSolmu.getAssa() || tapahtuma == 1; if (map[uusiKoodi] != null) { - // Jos tapahtumasolmu on jo Map-oliossa, ei lisätä sitä uudestaan, vaan päivitetään vain sen todennäköisyys. + // Jos tapahtumasolmu on jo Map-oliossa, ei lisata sita uudestaan, vaan paivitetaan vain sen todennakoisyys. map[uusiKoodi].lisaaTodennakoisyys(tapahtumaTodennakoisyys); } else { - // Jos tapahtumasolmu ei ole Map-oliossa, lisätään se myös jonoon käsiteltäväksi. + // Jos tapahtumasolmu ei ole Map-oliossa, lisataan se myos jonoon kasiteltavaksi. map[uusiKoodi] = new TapahtumaSolmu(uusiArvo, uusiAssa, tapahtumaTodennakoisyys, lahtoSolmu.seuraavaPakka(tapahtuma)); jono.lisaa(uusiKoodi); } } /** - * Muodostaa solmun kaikki lapset ja käsittelee ne. + * Muodostaa solmun kaikki lapset ja kasittelee ne. * * @param lahtokoodi Jonosta poimittu solmun kokonaislukukoodi * @param jono Jono, johon uusien solmujen koodit tallennetaan * @param map Taulukko, johon uudet solmut tallennetaan - * @param tulos Tulosvektori, johon uudet päätössolmut merkataan + * @param tulos Tulosvektori, johon uudet paatossolmut merkataan */ private void kasitteleTapahtumaHaara(int lahtokoodi, Jono jono, TapahtumaSolmu[] map, double[] tulos) { TapahtumaSolmu lahtoSolmu = map[lahtokoodi]; double[] tVektori = lahtoSolmu.laskeTodennakoisyydet(); - // Käydään läpi ja käsitellään kaikki mahdolliset tapahtumat: 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 + // Kaydaan lapi ja kasitellaan kaikki mahdolliset tapahtumat: 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 for (int i = 0; i <= 9; i++) { kasitteleTapahtuma(i, tVektori[i], lahtokoodi, lahtoSolmu, jono, map, tulos); } } /** - * Kokonaislukukoodi on summa, missä jokainen kädessä oleva kortti - * alkukorttia lukuunottamatta on lisää tietyn vakion koodiin. Vakio riippuu + * Kokonaislukukoodi on summa, missa jokainen kadessa oleva kortti + * alkukorttia lukuunottamatta on lisaa tietyn vakion koodiin. Vakio riippuu * kortin arvosta. * - * Vakiot on valittu siten, ettei yhteentörmäyksiä tapahdu mahdollisissa - * Blackjack käsissä. + * Vakiot on valittu siten, ettei yhteentormayksia tapahdu mahdollisissa + * Blackjack kasissa. * - * @param kortti Kortti joka lisätään jakajan käteen. - * @return Luku, joka tulee lisätä edelliseen koodiin, jotta saadaan uuden + * @param kortti Kortti joka lisataan jakajan kateen. + * @return Luku, joka tulee lisata edelliseen koodiin, jotta saadaan uuden * tapahtumasolmun koodi. */ private int koodi(int kortti) { diff --git a/maven-BJKA/src/main/java/bjka/Main.java b/maven-BJKA/src/main/java/bjka/Main.java index 275aa86..765464f 100644 --- a/maven-BJKA/src/main/java/bjka/Main.java +++ b/maven-BJKA/src/main/java/bjka/Main.java @@ -13,15 +13,15 @@ public class Main { /** - * Main metodi. Ks. dokumentaation käyttöohje. + * Main metodi. Ks. dokumentaation kayttoohje. * - * @param args komentorivillä annettu syöte. + * @param args komentorivilla annettu syote. */ public static void main(String[] args) { //Oletusarvo. - String syotePath = "syöte.txt"; + String syotePath = "syote.txt"; - //Jos käyttäjä antoi syötteen. + //Jos kayttaja antoi syotteen. if (args.length > 0) { //Erikoistapaus "suorituskyky" suorittaa suorituskykytestin. if (args[0].equals("suorituskyky")) { @@ -35,7 +35,7 @@ public static void main(String[] args) { return; } - //Oletusarvo korvataan syötteellä. + //Oletusarvo korvataan syotteella. syotePath = args[0]; } @@ -44,56 +44,56 @@ public static void main(String[] args) { try { lukija = new Scanner(syote); } catch (FileNotFoundException e) { - System.out.println("Tiedostoa ei löytynyt: " + syotePath); + System.out.println("Tiedostoa ei loytynyt: " + syotePath); return; } - //Ensimmäinen rivi syötetiedostossa. + //Ensimmainen rivi syotetiedostossa. int alkukortti; try { String rivi = lukija.nextLine(); alkukortti = Integer.parseInt(rivi); } catch (NoSuchElementException e) { - System.out.println("Ensimmäistä riviä ei löytynyt."); + System.out.println("Ensimmaista rivia ei loytynyt."); return; } catch (NumberFormatException e) { - System.out.println("Ensimmäinen rivi ei ole kokonaisluku."); + System.out.println("Ensimmainen rivi ei ole kokonaisluku."); return; } if (alkukortti <= 0 || alkukortti > 10) { - System.out.println("Ensimmäinen rivi ei esitä sopivaa alkukorttia."); + System.out.println("Ensimmainen rivi ei esita sopivaa alkukorttia."); return; } - //Toinen rivi syötetiedostossa. + //Toinen rivi syotetiedostossa. int[] lukumaarat = new int[10]; try { String rivi = lukija.nextLine(); - //Poistetaan kaikki merkit, jotka eivät ole ',' tai lukuja. + //Poistetaan kaikki merkit, jotka eivat ole ',' tai lukuja. rivi = rivi.replaceAll("[^\\d,]", ""); String[] sanat = rivi.split(","); for (int i = 0; i < 10; i++) { lukumaarat[i] = Integer.parseInt(sanat[i]); } } catch (NoSuchElementException e) { - System.out.println("Toista riviä ei löytynyt."); + System.out.println("Toista rivia ei loytynyt."); return; } catch (IndexOutOfBoundsException e) { - System.out.println("Toisessa rivissä on liian vähän argumentteja."); + System.out.println("Toisessa rivissa on liian vahan argumentteja."); return; } catch (NumberFormatException e) { - System.out.println("Toisen rivin argumentti ei sisältänyt lukua."); + System.out.println("Toisen rivin argumentti ei sisaltanyt lukua."); return; } lukija.close(); Pakka pakka = new Pakka(lukumaarat); Analysoija analysoija = new Analysoija(); - //Lasketaan todennäköisyydet. + //Lasketaan todennakoisyydet. double[] tulos = analysoija.analysoi(alkukortti, pakka); //Printout. - System.out.println("Jakajan käden todennäköisyydet"); + System.out.println("Jakajan kaden todennakoisyydet"); System.out.println("Alkukortti: " + alkukortti); System.out.println("Pakka: {" + "10: " + lukumaarat[0] diff --git a/maven-BJKA/src/main/java/bjka/Pakka.java b/maven-BJKA/src/main/java/bjka/Pakka.java index d053a5f..c53a807 100644 --- a/maven-BJKA/src/main/java/bjka/Pakka.java +++ b/maven-BJKA/src/main/java/bjka/Pakka.java @@ -7,13 +7,13 @@ public class Pakka { /* - Taulukon arvot esittävät eri arvoisten korttien lukumääriä. - Taulukon arvot ovat aina järjestyksessä 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 - Esim. 10-arvoisten korttien lukumäärä on indeksissä 0 ja 7-arvoisten korttien lukumärä indeksissä 7. + Taulukon arvot esittavat eri arvoisten korttien lukumaaria. + Taulukon arvot ovat aina jarjestyksessa 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 + Esim. 10-arvoisten korttien lukumaara on indeksissa 0 ja 7-arvoisten korttien lukumara indeksissa 7. */ private final int[] lukumaarat; - // Korttien yhteismäärä. + // Korttien yhteismaara. private int koko; public Pakka(int[] lukumaarat) { @@ -26,10 +26,10 @@ public Pakka(int[] lukumaarat) { /** * Laskee ja palauttaa taulukon, jossa korttien arvot ovat samassa - * järjestyksessä kuin lukumäärät-taulukossa. Todennäköisyysvektorin lukujen + * jarjestyksessa kuin lukumaarat-taulukossa. Todennakoisyysvektorin lukujen * summa on 1. * - * @return Vektori, joka esittää eri arvoisten korttien todennäköisyyksiä + * @return Vektori, joka esittaa eri arvoisten korttien todennakoisyyksia * tulla nostetuksi pakasta seuraavana. */ public double[] todennakoisyysVektori() { @@ -45,13 +45,13 @@ public double[] todennakoisyysVektori() { * parametrina annettu kortti. * * @param kortti Kortti, joka poistetaan pakasta. - * @return Pakka, joka jää jäljelle kortin poistamisen jälkeen. + * @return Pakka, joka jaa jaljelle kortin poistamisen jalkeen. */ public Pakka poistaKortti(int kortti) { kortti = kortti % 10; int[] uudetLukumaarat = this.lukumaarat.clone(); - // Lukumäärä voi mennä negatiiviseksi. Tulos on kuitenkin aina oikein (negatiivinen todennäköisyys kerrotaan aina nollalla). + // Lukumaara voi menna negatiiviseksi. Tulos on kuitenkin aina oikein (negatiivinen todennakoisyys kerrotaan aina nollalla). uudetLukumaarat[kortti] -= 1; return new Pakka(uudetLukumaarat); } diff --git a/maven-BJKA/src/main/java/bjka/Suorituskykytesti.java b/maven-BJKA/src/main/java/bjka/Suorituskykytesti.java index ddd5111..fa36705 100644 --- a/maven-BJKA/src/main/java/bjka/Suorituskykytesti.java +++ b/maven-BJKA/src/main/java/bjka/Suorituskykytesti.java @@ -7,11 +7,11 @@ public class Suorituskykytesti { /** * * @param alkuKortit analysoijan parametri alkuKortti jokaiselle - * kierrokselle. Oltava yhtä suuri kuin pakat. + * kierrokselle. Oltava yhta suuri kuin pakat. * @param pakat analysoijan parametri pakka jokaiselle kierrokselle. Oltava - * yhtä suuri kuin alkuKortit. + * yhta suuri kuin alkuKortit. * @param kello Kello, joka mittaa laskentaan kuluneen ajan. Parametrina - * testejä varten. + * testeja varten. */ public static void suorituskykytesti(int[] alkuKortit, Pakka[] pakat, KelloRajapinta kello) { Analysoija analysoija = new Analysoija(); @@ -20,15 +20,15 @@ public static void suorituskykytesti(int[] alkuKortit, Pakka[] pakat, KelloRajap //Aika alkaa. aika = kello.nanoTime(); - //Silmukka käsittelee kaikki alkiot parametrina annetuista taulukoista indeksi kerrallaan. + //Silmukka kasittelee kaikki alkiot parametrina annetuista taulukoista indeksi kerrallaan. for (int i = 0; i < alkuKortit.length; i++) { analysoija.analysoi(alkuKortit[i], pakat[i]); } - //Aika päättyy. + //Aika paattyy. aika = kello.nanoTime() - aika; - System.out.println("Todennäköisyyksien laskeminen jokaisella alkukortilla kesti " + aika + " nanosekuntia."); + System.out.println("Todennakoisyyksien laskeminen jokaisella alkukortilla kesti " + aika + " nanosekuntia."); } } diff --git a/maven-BJKA/src/main/java/bjka/TapahtumaSolmu.java b/maven-BJKA/src/main/java/bjka/TapahtumaSolmu.java index fc27c07..756096d 100644 --- a/maven-BJKA/src/main/java/bjka/TapahtumaSolmu.java +++ b/maven-BJKA/src/main/java/bjka/TapahtumaSolmu.java @@ -6,26 +6,26 @@ */ public class TapahtumaSolmu { - // Jakajan käden arvo. + // Jakajan kaden arvo. private final int arvo; - // Onko jakajan käsi pehmeä, ts. ei kova. - // Ei aina true, vaikka kädessä olisi ässä. + // Onko jakajan kasi pehmea, ts. ei kova. + // Ei aina true, vaikka kadessa olisi assa. private final boolean assa; - // Todennäköisyys, että tapahtumasolmuun päädytään. + // Todennakoisyys, etta tapahtumasolmuun paadytaan. private double todennakoisyys; - // Jäljellä oleva pakka. + // Jaljella oleva pakka. private final Pakka pakka; /** * - * @param arvo Jakajan käden arvo. - * @param assa Onko jakajan käsi pehmeä, ts. ei kova. Ei aina true, vaikka - * kädessä olisi ässä. - * @param todennakoisyys Todennäköisyys, että tapahtumasolmuun päädytään. - * @param pakka Jäljellä oleva pakka. + * @param arvo Jakajan kaden arvo. + * @param assa Onko jakajan kasi pehmea, ts. ei kova. Ei aina true, vaikka + * kadessa olisi assa. + * @param todennakoisyys Todennakoisyys, etta tapahtumasolmuun paadytaan. + * @param pakka Jaljella oleva pakka. */ public TapahtumaSolmu(int arvo, boolean assa, double todennakoisyys, Pakka pakka) { this.arvo = arvo; @@ -35,12 +35,12 @@ public TapahtumaSolmu(int arvo, boolean assa, double todennakoisyys, Pakka pakka } /** - * Todennäköisyysvektori tulee Pakka-olion - * todennäköisyysVektori()-metodilla. Kaikki vektorin todennäköisyydet - * kerrotaan solmun todennäköisyydellä. + * Todennakoisyysvektori tulee Pakka-olion + * todennakoisyysVektori()-metodilla. Kaikki vektorin todennakoisyydet + * kerrotaan solmun todennakoisyydella. * - * @return todennäköisyysvektori, joka esittää seuraavien tapahtumasolmujen - * todennäköisyyksiä tämän solmun kautta. + * @return todennakoisyysvektori, joka esittaa seuraavien tapahtumasolmujen + * todennakoisyyksia taman solmun kautta. */ public double[] laskeTodennakoisyydet() { double[] tVektori = this.pakka.todennakoisyysVektori(); @@ -54,7 +54,7 @@ public double[] laskeTodennakoisyydet() { * Kutsuu pakka-olion poistaKortti-metodia. * * @param kortti poistaKortti-metodin parametri. Poistettava kortti. - * @return poistaKortti-metodin palautus. Uusi pakka, jossa on kaikki tämän + * @return poistaKortti-metodin palautus. Uusi pakka, jossa on kaikki taman * solmun pakan kortit, paitsi poistettu kortti. */ public Pakka seuraavaPakka(int kortti) { @@ -62,10 +62,10 @@ public Pakka seuraavaPakka(int kortti) { } /** - * Kasvattaa solmun todennäköisyyttä. Käytetään, kun useampi kuin yksi - * tapahtuma johtaa samaan solmuun duplikaattien välttämiseksi. + * Kasvattaa solmun todennakoisyytta. Kaytetaan, kun useampi kuin yksi + * tapahtuma johtaa samaan solmuun duplikaattien valttamiseksi. * - * @param lisays Todennäköisyys, joka lisätään solmun todennäköisyyteen. + * @param lisays Todennakoisyys, joka lisataan solmun todennakoisyyteen. */ public void lisaaTodennakoisyys(double lisays) { this.todennakoisyys += lisays; diff --git a/maven-BJKA/src/main/java/tietorakenteet/Jono.java b/maven-BJKA/src/main/java/tietorakenteet/Jono.java index f9683b0..06986de 100644 --- a/maven-BJKA/src/main/java/tietorakenteet/Jono.java +++ b/maven-BJKA/src/main/java/tietorakenteet/Jono.java @@ -1,8 +1,8 @@ package tietorakenteet; /** - * Jono-tietorakenne, joka hyväksyy arvoiksi kokonaislukuja ja joka on optimoitu - * BJKA projektin käyttöön. + * Jono-tietorakenne, joka hyvaksyy arvoiksi kokonaislukuja ja joka on optimoitu + * BJKA projektin kayttoon. * * @author Chamion */ @@ -14,20 +14,20 @@ public class Jono { // indeksi jonon uusimmalle tulokkaalle. private int hanta; - // maksimimäärä alkiota, joka ei saa ylittyä. + // maksimimaara alkiota, joka ei saa ylittya. private final int maxKoko; // taulukko, johon alkiot tallennetaan. Taulukon koko on maxKoko. - // Alkioita ei pyyhitä taulukosta niiden poistamisen jälkeen. + // Alkioita ei pyyhita taulukosta niiden poistamisen jalkeen. private final int[] taulukko; /** - * Luo uuden jonon, joka on tyjä. Jonoon tallennettujen alkioiden määrä ei - * saa ylittää maxKokoa. Alkioiden poistaminen jonosta vapauttaa tilaa + * Luo uuden jonon, joka on tyja. Jonoon tallennettujen alkioiden maara ei + * saa ylittaa maxKokoa. Alkioiden poistaminen jonosta vapauttaa tilaa * uusille. * - * @param maxKoko Maksimimäärä arvoja, joita jonon tulee muistaa millä - * tahansa hetkellä. + * @param maxKoko Maksimimaara arvoja, joita jonon tulee muistaa milla + * tahansa hetkella. */ public Jono(int maxKoko) { this.paa = 0; @@ -37,9 +37,9 @@ public Jono(int maxKoko) { } /** - * Lisää annetun arvon jonoon. + * Lisaa annetun arvon jonoon. * - * @param arvo Lisättävä arvo. + * @param arvo Lisattava arvo. */ public void lisaa(int arvo) { this.taulukko[this.hanta] = arvo; @@ -52,7 +52,7 @@ public void lisaa(int arvo) { * @return jonossa seuraava alkio. */ public int get() { - // bugi: get tyhjälle jonolla sotkee tulevan käytön. + // bugi: get tyhjalle jonolla sotkee tulevan kayton. int palautettava = this.taulukko[this.paa]; this.paa = (this.paa + 1) % this.maxKoko; return palautettava; @@ -60,10 +60,10 @@ public int get() { /** * - * @return Onko jono tyhjä (ei yhtään alkiota tallennettuna) + * @return Onko jono tyhja (ei yhtaan alkiota tallennettuna) */ public boolean isEmpty() { - // bugi: palauttaa true, kun jono on täysi. + // bugi: palauttaa true, kun jono on taysi. return this.hanta == this.paa; } diff --git a/maven-BJKA/src/test/java/bjka/AnalysoijaTest.java b/maven-BJKA/src/test/java/bjka/AnalysoijaTest.java index 2ae56ef..ec5f0ba 100644 --- a/maven-BJKA/src/test/java/bjka/AnalysoijaTest.java +++ b/maven-BJKA/src/test/java/bjka/AnalysoijaTest.java @@ -39,7 +39,7 @@ public void tearDown() { public void analysoiOnSamaaMieltaWizardinKanssa() { // https://wizardofodds.com/games/blackjack/appendix/2b/ // Testin toimivuus riippuu wizardofodds.com:in tarkkuudesta. - // Testi ei huomannut bugia, joka aiheutti niin pienen virheen, että viimeinen merkitsevä numero ei muuttunut. Bugi on korjattu. + // Testi ei huomannut bugia, joka aiheutti niin pienen virheen, etta viimeinen merkitseva numero ei muuttunut. Bugi on korjattu. double[][] wizardArvot = new double[][]{ new double[]{0.111914, 0.111669, 0.111945, 0.340014, 0.0348174, 0.0771704, 0.212471}, new double[]{0.130017, 0.130822, 0.130594, 0.13091, 0.0535035, 0.308682, 0.115473}, diff --git a/maven-BJKA/src/test/java/bjka/MainTest.java b/maven-BJKA/src/test/java/bjka/MainTest.java index 54381ad..839804b 100644 --- a/maven-BJKA/src/test/java/bjka/MainTest.java +++ b/maven-BJKA/src/test/java/bjka/MainTest.java @@ -33,12 +33,12 @@ public void tearDown() { @Test public void suorituskykyKutsutaanErikoissyotteella(){ Main.main(new String[]{"suorituskyky"}); - assertTrue(tulostus.toString().matches("^Todennäköisyyksien laskeminen jokaisella alkukortilla kesti \\d+ nanosekuntia.\r\n$")); + assertTrue(tulostus.toString().matches("^Todennakoisyyksien laskeminen jokaisella alkukortilla kesti \\d+ nanosekuntia.\r\n$")); } @Test public void mainAntaaSamatArvotKuinAnalysoija(){ - Main.main(new String[]{"src/test/java/testisyötteet/testisyöte1.txt"}); + Main.main(new String[]{"src/test/java/testisyotteet/testisyote1.txt"}); String[] rivit = tulostus.toString().split("\r\n"); double[] mainTulos = new double[7]; for(String rivi : rivit) { @@ -64,10 +64,10 @@ public void mainAntaaSamatArvotKuinAnalysoija(){ @Test public void tulostuksenMuotoOnOikea(){ - Main.main(new String[]{"src/test/java/testisyötteet/testisyöte1.txt"}); + Main.main(new String[]{"src/test/java/testisyotteet/testisyote1.txt"}); String[] rivit = tulostus.toString().split("\r\n"); assertEquals(10, rivit.length); - assertTrue(rivit[0].matches("^Jakajan käden todennäköisyydet$")); + assertTrue(rivit[0].matches("^Jakajan kaden todennakoisyydet$")); assertTrue(rivit[1].matches("^Alkukortti: ([1-9]|10)$")); assertTrue(rivit[2].matches("^Pakka: \\{(((,|, |)[1-9]|10):( |)\\d+){10}\\}$")); assertTrue(rivit[3].matches("^BJ:( |)[\\d.]+$")); @@ -81,59 +81,59 @@ public void tulostuksenMuotoOnOikea(){ @Test public void tiedostoaEiLoytynyt(){ - Main.main(new String[]{"src/test/java/testisyötteet/olematon_tiedosto.txt"}); - assertEquals("Tiedostoa ei löytynyt: src/test/java/testisyötteet/olematon_tiedosto.txt\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/olematon_tiedosto.txt"}); + assertEquals("Tiedostoa ei loytynyt: src/test/java/testisyotteet/olematon_tiedosto.txt\r\n", tulostus.toString()); } @Test public void EnsimmaistaRiviaEiLoytynyt(){ - Main.main(new String[]{"src/test/java/testisyötteet/tyhjä.txt"}); - assertEquals("Ensimmäistä riviä ei löytynyt.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/tyhja.txt"}); + assertEquals("Ensimmaista rivia ei loytynyt.\r\n", tulostus.toString()); } @Test public void EnsimmainenRiviEiOleKokonaisluku(){ - Main.main(new String[]{"src/test/java/testisyötteet/huono_eka_rivi.txt"}); - assertEquals("Ensimmäinen rivi ei ole kokonaisluku.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/huono_eka_rivi.txt"}); + assertEquals("Ensimmainen rivi ei ole kokonaisluku.\r\n", tulostus.toString()); } @Test public void alkukorttiOnLiianSuuri(){ - Main.main(new String[]{"src/test/java/testisyötteet/huono_alkukortti1.txt"}); - assertEquals("Ensimmäinen rivi ei esitä sopivaa alkukorttia.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/huono_alkukortti1.txt"}); + assertEquals("Ensimmainen rivi ei esita sopivaa alkukorttia.\r\n", tulostus.toString()); } @Test public void alkukorttiOnLiianPieni(){ - Main.main(new String[]{"src/test/java/testisyötteet/huono_alkukortti2.txt"}); - assertEquals("Ensimmäinen rivi ei esitä sopivaa alkukorttia.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/huono_alkukortti2.txt"}); + assertEquals("Ensimmainen rivi ei esita sopivaa alkukorttia.\r\n", tulostus.toString()); } @Test public void vainYksiRivi(){ - Main.main(new String[]{"src/test/java/testisyötteet/yksi_rivi.txt"}); - assertEquals("Toista riviä ei löytynyt.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/yksi_rivi.txt"}); + assertEquals("Toista rivia ei loytynyt.\r\n", tulostus.toString()); } @Test public void liianVahanArgumentteja(){ - Main.main(new String[]{"src/test/java/testisyötteet/vajaa_toinen_rivi.txt"}); - assertEquals("Toisessa rivissä on liian vähän argumentteja.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/vajaa_toinen_rivi.txt"}); + assertEquals("Toisessa rivissa on liian vahan argumentteja.\r\n", tulostus.toString()); } @Test public void huonoToinenRivi(){ - Main.main(new String[]{"src/test/java/testisyötteet/huono_toinen_rivi.txt"}); - assertEquals("Toisen rivin argumentti ei sisältänyt lukua.\r\n", tulostus.toString()); + Main.main(new String[]{"src/test/java/testisyotteet/huono_toinen_rivi.txt"}); + assertEquals("Toisen rivin argumentti ei sisaltanyt lukua.\r\n", tulostus.toString()); } @Test public void oletussyote(){ - File tuhottava = new File("syöte.txt"); + File tuhottava = new File("syote.txt"); FileOutputStream oFile; try { tuhottava.createNewFile(); - oFile = new FileOutputStream("syöte.txt", false); + oFile = new FileOutputStream("syote.txt", false); oFile.write("2\r\n".getBytes()); oFile.write("32, 8, 7, 8, 8, 8, 8, 8, 8, 8".getBytes()); oFile.close(); diff --git a/maven-BJKA/src/test/java/bjka/PakkaTest.java b/maven-BJKA/src/test/java/bjka/PakkaTest.java index 60ae9db..a3d4965 100644 --- a/maven-BJKA/src/test/java/bjka/PakkaTest.java +++ b/maven-BJKA/src/test/java/bjka/PakkaTest.java @@ -72,7 +72,7 @@ public void todennakoisyysVektoriSietaaNollia() { nollaPakka = new Pakka(new int[]{0, 1, 0, 0, 0, 0, 0, 2, 0, 0}); Assert.assertArrayEquals(new double[]{0, (double) 1/3, 0, 0, 0, 0, 0, (double) 2/3, 0, 0}, nollaPakka.todennakoisyysVektori(), 0.0000001); - // 0 kortin pakalla ei testata. Tyhjästä pakasta nostaminen on järjetön tilanne, joten ei voida olettaa järjellistä vastausta. + // 0 kortin pakalla ei testata. Tyhjasta pakasta nostaminen on jarjeton tilanne, joten ei voida olettaa jarjellista vastausta. } diff --git a/maven-BJKA/src/test/java/testiluokat/Testikello.java b/maven-BJKA/src/test/java/testiluokat/Testikello.java index c879ed1..01b2fab 100644 --- a/maven-BJKA/src/test/java/testiluokat/Testikello.java +++ b/maven-BJKA/src/test/java/testiluokat/Testikello.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package testiluokat; import kello.KelloRajapinta; diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/huono_alkukortti1.txt" b/maven-BJKA/src/test/java/testisyotteet/huono_alkukortti1.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/huono_alkukortti1.txt" rename to maven-BJKA/src/test/java/testisyotteet/huono_alkukortti1.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/huono_alkukortti2.txt" b/maven-BJKA/src/test/java/testisyotteet/huono_alkukortti2.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/huono_alkukortti2.txt" rename to maven-BJKA/src/test/java/testisyotteet/huono_alkukortti2.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/huono_eka_rivi.txt" b/maven-BJKA/src/test/java/testisyotteet/huono_eka_rivi.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/huono_eka_rivi.txt" rename to maven-BJKA/src/test/java/testisyotteet/huono_eka_rivi.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/huono_toinen_rivi.txt" b/maven-BJKA/src/test/java/testisyotteet/huono_toinen_rivi.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/huono_toinen_rivi.txt" rename to maven-BJKA/src/test/java/testisyotteet/huono_toinen_rivi.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/testisy\303\266te1.txt" b/maven-BJKA/src/test/java/testisyotteet/testisyote1.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/testisy\303\266te1.txt" rename to maven-BJKA/src/test/java/testisyotteet/testisyote1.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/tyhj\303\244.txt" b/maven-BJKA/src/test/java/testisyotteet/tyhja.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/tyhj\303\244.txt" rename to maven-BJKA/src/test/java/testisyotteet/tyhja.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/vajaa_toinen_rivi.txt" b/maven-BJKA/src/test/java/testisyotteet/vajaa_toinen_rivi.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/vajaa_toinen_rivi.txt" rename to maven-BJKA/src/test/java/testisyotteet/vajaa_toinen_rivi.txt diff --git "a/maven-BJKA/src/test/java/testisy\303\266tteet/yksi_rivi.txt" b/maven-BJKA/src/test/java/testisyotteet/yksi_rivi.txt similarity index 100% rename from "maven-BJKA/src/test/java/testisy\303\266tteet/yksi_rivi.txt" rename to maven-BJKA/src/test/java/testisyotteet/yksi_rivi.txt diff --git a/maven-BJKA/src/test/java/tietorakenteet/JonoTest.java b/maven-BJKA/src/test/java/tietorakenteet/JonoTest.java index 050571f..ff36f3e 100644 --- a/maven-BJKA/src/test/java/tietorakenteet/JonoTest.java +++ b/maven-BJKA/src/test/java/tietorakenteet/JonoTest.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package tietorakenteet; import org.junit.Before; @@ -43,7 +38,7 @@ public void jonoAntaaArvotFIFOJarjestyksessa() { @Test public void taysiJonoYlikirjoittaaVanhan() { - //Ts. testataan, ettei jono varaa ylimääräistä tilaa. + //Ts. testataan, ettei jono varaa ylimaaraista tilaa. Jono pieniJono = new Jono(2); pieniJono.lisaa(0); pieniJono.lisaa(1); @@ -77,14 +72,4 @@ public void isEmptyTyhjallaJonolla(){ this.jono.get(); assertTrue(this.jono.isEmpty()); } - - /*@Test - public void EiIsEmptyKunAlkioita(){ - this.jono.lisaa(3); - assertFalse(this.jono.isEmpty()); - Jono pieniJono = new Jono(2); - pieniJono.lisaa(3); - pieniJono.lisaa(3); - assertFalse(pieniJono.isEmpty()); - }*/ }