Proměnné:
public ArrayList<String> omezeni = new ArrayList<>(); // seznam nazvu pouzitych omezeni public ArrayList<String> barvy = new ArrayList<>(); // seznam pouzitych barev public ArrayList<String> jmena = new ArrayList<>(); // seznam jmen public ArrayList<Postava> postavy; // posloupnost postav v danem poradi, jak jsou na fotce, // kazda postava je definovana promennymi barvaKalhot a barvaKosile, // Struktury popisujici nadefinovana omezeni public HashMap<String,ArrayList<String>> sousedi; // Omezeni: kazde jmeno ma prirazen seznam jmen, se kterymi MUSI sousednit public HashMap<String,ArrayList<String>> nesousedi; // Omezeni: kazde jmeno ma prirazen seznam jmen, se kterymi NESMI sousednit public HashMap<String,ArrayList<String>> jeNalevoOd; // Omezeni: kazde jmeno ma prirazen seznam jmen, od kterych musi byt nalevo public HashMap<String,ArrayList<String>> jeNapravoOd; // Omezeni: kazde jmeno ma prirazen seznam jmen, od kterych musi byt napravo public HashMap<String,String> maKosiliBarvy; // Omezeni: kazde jmeno ma prirazenu povinnou barvu kosile public HashMap<String,ArrayList<String>> nemaKosiliBarvy; // Omezeni: kazde jmeno ma prirazen seznam zakazanych barev kosile public HashMap<String,String> maKalhotyBarvy; // Omezeni: kazde jmeno ma prirazenu povinnou barvu kalhot public HashMap<String,ArrayList<String>> nemaKalhotyBarvy; // Omezeni: kazde jmeno ma prirazen seznam zakazanych barev kalhot public HashMap<String,ArrayList<String>> pripustneBarvyKosile; // kazde jmeno ma prirazen seznam pripustnych barev kosile public HashMap<String,ArrayList<String>> pripustneBarvyKalhot; // kazde jmeno ma prirazen seznam pripustnych barev kalhot public HashMap<String,ArrayList<Integer>> 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)