====== Třída Hádanka ======
Proměnné:
public ArrayList omezeni = new ArrayList<>(); // seznam nazvu pouzitych omezeni
public ArrayList barvy = new ArrayList<>(); // seznam pouzitych barev
public ArrayList jmena = new ArrayList<>(); // seznam jmen
public ArrayList postavy; // posloupnost postav v danem poradi, jak jsou na fotce,
// kazda postava je definovana promennymi barvaKalhot a barvaKosile,
// Struktury popisujici nadefinovana omezeni
public HashMap> sousedi; // Omezeni: kazde jmeno ma prirazen seznam jmen, se kterymi MUSI sousednit
public HashMap> nesousedi; // Omezeni: kazde jmeno ma prirazen seznam jmen, se kterymi NESMI sousednit
public HashMap> jeNalevoOd; // Omezeni: kazde jmeno ma prirazen seznam jmen, od kterych musi byt nalevo
public HashMap> jeNapravoOd; // Omezeni: kazde jmeno ma prirazen seznam jmen, od kterych musi byt napravo
public HashMap maKosiliBarvy; // Omezeni: kazde jmeno ma prirazenu povinnou barvu kosile
public HashMap> nemaKosiliBarvy; // Omezeni: kazde jmeno ma prirazen seznam zakazanych barev kosile
public HashMap maKalhotyBarvy; // Omezeni: kazde jmeno ma prirazenu povinnou barvu kalhot
public HashMap> nemaKalhotyBarvy; // Omezeni: kazde jmeno ma prirazen seznam zakazanych barev kalhot
public HashMap> pripustneBarvyKosile; // kazde jmeno ma prirazen seznam pripustnych barev kosile
public HashMap> pripustneBarvyKalhot; // kazde jmeno ma prirazen seznam pripustnych barev kalhot
public HashMap> pripustnaPrirazeni; // kazde jmeno ma prirazen seznam pripustnych pozic
// POZOR: Pouze, uvazuji se omezeni na barvu kalhot a kosile.
// Omezeni typu sousedi, nesousedi, nalevood, napravood nejsou zohlednena.
Metody:
/**
* Nacte celou definici hadanky ze vstupniho souboru.
* @param vstSoubor
*/
private void nactiHadanku(String vstSoubor)
/**
* Vypise seznam postav jako dvojice barvaKalhot-barvaKosile
*/
public void vypisPostavy()
/**
* Vypise pro kazde jsmeno seznam vsech pripustnych pozic.
*/
public void vypisPripustnaPrirazeni(){
/**
* Naplni strukturu pripustneBarvyKosile na zaklade vsech omezeni typu
* mabarvukosile a nemabarvukosile.
* Kazdemu jmenu vytvori seznam pripustnych barev kosile.
*/
public void zpracujBarvyKosile()
/**
* Naplni strukturu pripustneBarvyKalhot na zaklade vsech omezeni typu
* mabarvukalhot a nemabarvukalhot.
* Kazdemu jmenu vytvori seznam pripustnych barev kalhot.
*/
public void zpracujBarvyKalhot()
/**
* Vytvori strukturu, ve ktere bude mit kazde jmeno prirazen seznam vsech pripustnych pozic.
*
* POZOR: Uvazuje pouze omezeni na barvu kalhot a kosile.
* Jina omezeni neuvazuje.
*/
public void nastavPripustnaPrirazeni()
/**
* Zpracuje jedno konkretni omezeni typu sousedi(A,B).
* To znamena, ze prida do seznamu omezeni sousedi jmeno B do seznamu sousedu A
* a jmeno A do seznamu sousedu B.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujSousedi(String[] parametry)
/**
* Vypise seznam omezeni typu sousedi.
* U kazdeho jmena vypise seznam jmen, se kterymi musi postava daneho jmena sousedit.
*/
public void vypisSousedi()
/**
* Zpracuje jedno konkretni omezeni typu nesousedi(A,B), tzn. postava A neni na fotce vedle postavy B.
* To znamena, ze prida do seznamu omezeni nesousedi jmeno B do seznamu nesousedu A
* a jmeno A do seznamu nesousedu B.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujNesousedi(String[] parametry)
/**
* Vypise seznam omezeni typu nesousedi.
* U kazdeho jmena vypise seznam jmen, se kterymi NESMI postava daneho jmena sousedit.
*/
public void vypisNesousedi()
/**
* Zpracuje jedno konkretni omezeni typu nalevood(A,B), tzn. postava A je na fotce nalevo od postavy B.
* Prida jmeno B do seznamu omezeni jeNalevoOd zaznamu s klicem A,
* a jmeno A do seznamu jeNapravoOd zaznamu s klicem B.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujJeNalevoOd(String[] parametry)
/**
* Zpracuje jedno konkretni omezeni typu makosilibarvy(jmeno,barva),
* tzn. priradi danou barvu postave s danym jmenem.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujMaKosiliBarvy(String[] parametry)
/**
* Zpracuje jedno konkretni omezeni typu nemakosilibarvy(jmeno,barva),
* tzn. priradi danou barvu do seznamu nepripustnych barev kosile postave s danym jmenem.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujNemaKosiliBarvy(String[] parametry)
/**
* Zpracuje jedno konkretni omezeni typu makalhotybarvy(jmeno,barva),
* tzn. priradi danou barvu kalhot postave s danym jmenem.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujMaKalhotyBarvy(String[] parametry)
/**
* Zpracuje jedno konkretni omezeni typu nemakalhotybarvy(jmeno,barva),
* tzn. priradi danou barvu do seznamu NEpripustnych barev kalhot postave s danym jmenem.
* @param parametry
* @return true, kdyz je omezeni konzistentni se stavajici mnozinou omezeni.
*/
public boolean zpracujNemaKalhotyBarvy(String[] parametry)
[[2014_15:kdo_je_kdo:tridareseni|Třída Reseni]]
[[2014_15:kdo_je_kdo:tridanahodny|Třída Nahodny]]
[[2014_15:kdo_je_kdo:tridamain|Třída Main]]
[[2014_15:kdo_je_kdo|Zpět na stránku se zadáním]]