modCesta_Nejlepτíⁿeτení_SouƒetSpojnic = (modCesta_Jak∞SouƒetSpojnicHledat==modCesta_NEJMENµ╓_SOU¼ET?2147483647:0); // nejhorτí moºn∞ souƒet hodnot atributà spojnic - v reále nemoºn∞, bude nahrazen lepτím uº p²i nalezení první vyhovující cesty
modCesta_Nejlepτíⁿeτení_Θroveσ = 0;
// zapsání parametrà v∞poƒtu do souboru, pokud si to uºivatel p²ál
mod_VypiτHláτku("Sou²adnice místa "+(string)(char)('A'+modCesta_ZadávanéMísto)+" je "+StrL¼íslo(modCesta_Sou²adniceMíst[modCesta_ZadávanéMísto*2],-1)+","+StrL¼íslo(modCesta_Sou²adniceMíst[modCesta_ZadávanéMísto*2+1],-1)+"...", mod_VYPIµHL╡µKU_VY¼KEJ);
switch(mod_NechZvolit("Nastavovat atributy spojnic automaticky na jejich grafickou délku v pixelech?")) {
case 0: modCesta_AtributJeDélkaSpojnice = 1; break;
case 1: modCesta_AtributJeDélkaSpojnice = 0; break;
}
// INFORMACE O TOM, ZDA M╡ BφT HODNOTA ATRIBUTU SPOJNICE AUTOMATICKY NASTAVOV╡NA NA GRAFICKOU VZD╡LENOST M╓ST, KTER╡ SPOJUJE
if(mod_ReºimObrazovky == mod_TEXTOVφ_REªIM) {
mod_VypiτHláτku("Atributy spojnic "+(modCesta_AtributJeDélkaSpojnice?"budu":"nebudu")+" automaticky nastavovat na jejich grafickou délkou...", mod_VYPIµHL╡µKU_VY¼KEJ);
}
// ZJIµT╖N╓ INFORMAC╓ O SPOJNIC╓CH, KTERÉ JE MOªNO PⁿI NAVµT╖VOV╡N╓ M╓ST POUª╓T
// ZJIµT╖N╓ PRVN╓HO Z M╓ST TVOⁿ╓C╓CH PR╡V╖ ZAD╡VANOU SPOJNICI
mod_VypiτHláτku("Zadejte písmenné oznaƒení prvního z míst tvo²ícího "+StrL¼íslo(modCesta_ZadávanáSpojnice+1,-1)+". spojnici [A-"+(string)(char)('A'+modCesta_PoƒetMíst-1)+"]: ", mod_VYPIµHL╡µKU_NE¼EKEJ);
// ZJIµT╖N╓ DRUHÉHO Z M╓ST TVOⁿ╓C╓CH PR╡V╖ ZAD╡VANOU SPOJNICI
mod_VypiτHláτku("Zadejte písmenné oznaƒení druhého z míst tvo²ícího "+StrL¼íslo(modCesta_ZadávanáSpojnice+1,-1)+". spojnici [A-"+(string)(char)('A'+modCesta_PoƒetMíst-1)+"]: ", mod_VYPIµHL╡µKU_NE¼EKEJ);
// ZOBRAZEN╓ PR╡V╖ ZAD╡VANÉ SPOJNICE SPOLU S JIª ZADANφMI
if(mod_ReºimObrazovky == mod_GRAFICKφ_REªIM) {
modCesta_VykresliMapu(0, -1);
}
// INFORMACE O PR╡V╖ ZAD╡VANÉ SPOJNICI
if(mod_ReºimObrazovky == mod_TEXTOVφ_REªIM) {
mod_VypiτHláτku(StrL¼íslo(modCesta_ZadávanáSpojnice+1,-1)+". spojnice spojuje místa "+(string)(char)('A'+modCesta_Spojnice[modCesta_ZadávanáSpojnice].Místo1)+" a "+(string)(char)('A'+modCesta_Spojnice[modCesta_ZadávanáSpojnice].Místo2)+" a má atribut hodnoty "+StrL¼íslo(modCesta_Spojnice[modCesta_ZadávanáSpojnice].Atribut,-1)+"...", mod_VYPIµHL╡µKU_VY¼KEJ);
// ne, není => pozice tedy není vyhovující (hledá se jen to nejlepτí ²eτení)
return 0;
}
// pozn.: p²i hledání co nejv╪tτího souƒtu nelze rozhodovat jiº o kvalit╪ ƒásteƒného ²eτení (tj. na tomto míst╪), lze tak uƒinit aº p²i nalezení kompletního ²eτení
// zobrazení práv╪ testované pozice, pokud si uºivatel toto nastavil
// ne, není => ²eτení nemá smysl zaznamenávat (hledá se jen to nejlepτí)
return;
}
// pozn.: p²i hledání co nejv╪tτího souƒtu nelze rozhodovat jiº o kvalit╪ ƒásteƒného ²eτení (jako se tomu d╪je p²i hledání nejmenτího souƒtu), lze tak uƒinit aº p²i nalezení kompletního ²eτení (tj. na tomto míst╪)
// ano => uloºení nalezeného ²eτení jako dosud nejlepτího
ModulInfo->Popis = "P²i cestování se ƒlov╪k ƒasto ocitne v situaci, kdy má k dispozici n╪kolik ràzn∞ch cest, kter∞mi se màºe vydat. Ideální samoz²ejm╪ je zvolit tu nejlepτí (nejkratτí, ƒasov╪ nejmén╪ nároƒnou, nejlevn╪jτí...). Jak ji ale poznat, pokud se n╪které z nabízejících se cest jeτt╪ dále rozd╪lují a jiné naopak spojují - kdyº je sí£ cest p²íliτ sloºitá? Tady letm∞ pohled nepomàºe, pro nalezení té nejlepτí cesty se prost╪ musí vyzkouτet vτechny moºnosti. Tento modul vyuºívá algoritmus backtrackingu k vyhledání nejlepτí cesty za vás.";