Počítačový program VKSACH

1. Úvod

Program VKSACH (verze 8.1) pracuje na počítači IBM/PC a řeší šachové úlohy s důrazem na exoproblémy. Je vhodný pro skladatele, řešitele, redaktory šachových rubrik i pořadatele problémových turnajů. Kontroluje korektnost šachových úloh, hledá vedlejší řešení, duály, neřešitelnosti, umožňuje objevit svůdnosti a pokusy i jejich event.vícenásobná vyvrácení a je možno též analyzovat zdánlivé hry. Přezkoušení počítačem přináší do problémového šachu nový kvalitativní faktor jistotu, že úloha je korektní.

Z hlediska praktického (operátorského) přináší VKSACH specifické vlastnosti

RST soubory řešení je možno kdykoliv přerušit a pokračovat od stejného místa dále (i po vypnutí počítače). Navíc je během řešení stav automaticky zálohován každých 10 minut.

residentní provoz možnost provozování pod systémem MS-DOS v pozadí s uvolněním počítače i pro jinou práci.

Z hlediska šachového je kromě řešení (což je v podstatě rutinní záležitost) síla VKSACHu především v

redukčním algoritmu a optimalizaci obrazců (špičkové časy zejména pro sh#n/RS1 a h#n/RS)

definování uživatelských exokamenů a exošachovnic

originálních metodách, umožňujících skládání úloh počítačem

praktických možnostech interaktivního editování pozic

jednoduché struktuře souborů pozic (INP) a řešení (OUT), které jsou textové, umožňují více pozic v 1 souboru a je s nimi snadná manipulace (i mimo VKSACH)

vazbě na kvalitní grafické výstupy obsahující diagramy, použitelné buď pro tisk na laserové tiskárně nebo jako vstup do DTP. Podstatné je, že stačí zálohovat jen malé INP soubory.

2. Spuštění programu VKSACH

VKSACH vyžaduje minimálně procesor 80286 (tj.IBM-PC/AT), některé aplikace (skládání úloh) jsou použitelné jen od 80386 výše. MS-DOS stačí verze 3.30, ale v případě práce s extended memory se doporučuje aspoň 5.0 nebo nejlépe 6.20.

2.1. Interaktivní

Program VKSACH je možno volat několika způsoby, z nichž ovšem nejobvyklejší je normální volání umožňující interaktivní práci

C>vks

Pokud budeme pracovat se soubory, je vhodné VKSACH zavolat z toho adresáře, kde se příslušné soubory nacházejí (tj.např. C:\ULOHY>\VKSACH\VKS), jinak je nutné definovat cestu příkazem Z.

VKSACH pracuje v grafickém režimu a automaticky detekuje desky VGA nebo EGA (640x350 bodů), Hercules (720x348 bodů), příp.CGA (640x200 bodů).

2.2. Souborové

Další možností volání VKSACHu je tzv.souborové spuštění

C>vks soubor

což odpovídá dále popsanému režimu S bez zobrazování. Pokud již existuje soubor OUT, jsou další výstupy připojovány (append) k tomuto souboru.

Specifikace souboru je řetězec maximálně 8 znaků, přípustné je i zadání včetně typu. Ve specifikaci souboru není přípustná specifikace disku nebo cesty. Chceme-li např.řešit na disketě na adresáři ULOHY soubor POKUS.INP, a VKSACH je na disku C v adresáři VKSACH, musíme postupovat takto:

C>a:

A>cd ulohy

A:\ULOHY>c:\vksach\vks ulohy

Soubor OUT vznikne na A:\ULOHY\.

2.3. Residentní

Konečně poslední možnost spuštění VKSACHu je

C>vks soubor R

V tomto případě je VKSACH nainstalován jako residentní program a běží v pozadí . To umožňuje v podstatě multitasking i pod DOSem, přičemž VKSACH má nižší prioritu než příp. právě prováděný program. Po zavolání VKSACHu s parametrem "R" se program vrací do systému a je možné další zadávání příkazů. Odhady ukazují, že režie obsluhy systému pouze při čekání na klávesnici je jenom 1-2%, o tento čas bude řešení delší, ale dokonale využijeme dobu, kdy je počítač odstaven. Residentní spuštění je určeno pro specialisty a není vhodné současně třeba ladit neodzkoušený program, protože jeho kolaps má za následek částečnou ztrátu řešení. Nejčastější bude proto zřejmě volání editoru apod. Po dokončení řešení souboru pozic je residentní VKSACH z paměti automaticky odinstalován.

Je možno nainstalovat i více residentních VKSACHů (omezeno pouze kapacitou paměti), praktický význam má však pouze provozování jednoho residentního VKSACHu spolu s interaktivně spuštěným VKSACHem. Interaktivně spuštěný VKSACH má pak vyšší prioritu a residentní VKSACH jede pouze při čekání na klávesnici (např.v době zadávání pozic nebo při prohlížení souborů).

Je k dispozici program RVKS, který umožňuje přepínat v pravém horním rohu obrazovky zobrazení času residentní úlohy. Funguje systémem ON/OFF a předdefinovaná hodnota je ON (čas je zobrazován). Podle toho, zda jde čas (pokud je RVKS ve stavu ON), též poznáme, zda residentní úloha na pozadí skutečně běží (příp. s kterými programy neběží). Vše funguje na deskách >=EGA a čas je viditelný, jen pokud program bežící v popředí pracuje v textovém režimu. Pole času je zobrazováno zelenou barvou, po dořešení všech pozic je přezobrazeno červeně.

Residentní nebo souborové volání VKSACHu je možno též umístit do souboru AUTOEXEC.BAT, čímž se zajistí nové spuštění VKSACHu od RST souboru při výpadku napájení počítače a opětovném zapnutí. Zařazení do AUTOEXECu je dobré udělat takto (v příkladu je VKSACH v adresáři nebo je na něj definována cesta a na tomtéž adresáři jsou soubory RESENI.RST a RESENI.INP a výstup je připojován k případnému již existujícímu souboru RESENI.OUT):

cd\vks

if EXIST reseni.rst vks reseni r

cd..

Pokud by řešení již mezitím skončilo, RST soubor v době spuštění AUTOEXECu již neexistuje a řešení se tedy nespustí.

 

 

3. Režimy činnosti

Nyní se vraťme k základnímu volání (tj. C>vks). VKSACH se dostává do základní nabídky (úvodního dialogu) a na obrazovku se vypíše výčet základních možných režimů:

vstup výstup

R zadání a řešení úloh klávesnice obrazovka

I zadání úloh klávesnice soubor INP

S řešení úloh soubor INP soubor OUT (+RST)

L prohlížení řešení soubor OUT obrazovka

T prohlížení pozic soubor INP obrazovka

V přehrávání řešení soubor OUT obrazovka

Q zadání a řešení úloh klávesnice soubor OUT

W řešení úloh soubor INP obrazovka

P tisk soubor OUT tiskárna (textový formát)

Následují pomocné příkazy:

+ konverze souborů 1 soubor INP soubor SAZ (starší verze tisků)

2 soubor OUT soubor SAZ

3 soubor OUT soubor INP

4 soubor OUT soubor $.OUT

(volba 3 umožňuje extrakci pozic ze souboru OUT a pomocí volby 4 je možno ze souborů OUT [vzniklých pomocí &] vytvořit soubor počátečních pozic složených úloh). Konverze souborů vyžadují navíc 64 kB volné paměti.

O přepnutí typu zobrazení (1 nebo 2 šachovnice, 2 jsou vhodné při použití redukčního algoritmu ke sledování probíraných obrazců)

D výpis jmen souborů INP, OUT a RST na aktuálním adresáři

B beep on (perioda), po skončení řešení pípne

G color OFF (zelená barva), pouze monochromatické zobrazení

0 reset parametrů (beep off, bílá barva)

1 color ON, parametry barev jako při normálním spuštění

Z volba cesty, příp.jiného disku (c:\cesta1\cesta2\ nebo <ESC> exit, odchod do MS-DOSu

M dvojnásobné zobrazení (pro VGA, Hercules, EGA, jen pokud je "O"=1)

Po zadání R se přechází přímo do zadávání pozic, režimy Q a I nejprve vyžadují zadání jména souboru a potom též přecházejí do zadávání pozic.

Režimy W,S, resp.L,V,P,T rovněž vyžadují nejprve volbu souboru a pak přecházejí do fáze řešení (W,S) nebo prohlížení souboru pozic (L,V,P,T).

Zadávání vstupních souborů pro režimy I,W,S,T a L je možno provést buď volbou příslušného souboru z nabídky pomocí kurzorových šipek nebo stisknutím klávesy "R" s ruční specifikací jména souboru (např.v režimu I při zakládání nového souboru). Je možné též vymazání souboru pomocí "E" a volby typu.

Přechod na jiný adresář je možno provést buď pomocí příkazu Z nebo v režimech T,L,V,P z příslušného menu. Adresáře jsou zde zobrazeny velkými písmeny, soubory INP a OUT malými písmeny. Dvě tečky označují (v souladu s obvyklými konvencemi) logicky předchozí adresář. Volbu jiného disku je možno provést příkazem Z.

Vstupy a výstupy programu mohou být buď z klávesnice a na obrazovku nebo přes diskové soubory. Režim R je vhodný pro řešení jedné časově nenáročné úlohy, u které nechceme ĺ mít uloženy výsledky na disku a je šikovný např. pro interaktivní skládání s okamžitou kontrolou korektnosti. Pro rozsáhlejší práci (napr.řešení 100 úloh, nebo i jen jedné časově náročné) je vhodný režim, který umožňuje automatický provoz počítače i po dobu desítek hodin bez nutnosti zásahu:

1) V režimu I se postupně zadají všechny pozice. Pouze se kontroluje formální správnost zadání a úlohy se neřeší. Vzniká soubor typu INP, přičemž pokud chceme, aby se úloha zařadila do tohoto souboru, zadáme po

uložit (0=ne,1=ano)? 1

["0" zadáme např.v případě, že jsme zjistili, že pozice zobrazená na diagramu neodpovídá pozici úlohy pak v "Modifikaci" provedeme potřebné opravy a postup opakujeme, přičemž je možno s výhodou využít funkční klávesy, zejména F10 (opakování poslední výzvy), příp. ještě F9 (opakování posledního komentáře)].

2) V režimu S se provede start řešení všech zadaných pozic. Vzniká soubor typu OUT, který obsahuje všechna řešení.

3) V režimu L je možno soubor typu OUT prohlížet.

 

Po zadání úloh je možné využít režim T, kdy lze prohlížet soubor vstupních pozic (typu INP) určených pro následné řešení. V tomto režimu je možné postupné prohlížení pozic, volba pozice daného pořadového čísla (po zadání příslušného čísla v intervalu 1 až 9999, příp.F4=1) a též je možné vymazání pozice z tohoto souboru (po zadání -2).

S výhodou lze též využít možnost přímého přechodu do režimu R s aktuálně navolenou úlohou (pomocí F1).

Po novém zadání režimu T (z "Modifikace") pokračuje prohlížení souboru INP od následující úlohy, příp.od začátku, pokud byla předchozí úloha poslední v souboru.

Možnosti režimu L při prohlížení souboru typu OUT jsou identické jako v režimu T.

Analogický režim režimu L je režim V, umožňující přehrávání řešení ze souboru OUT. Přehrávat je možno ručně (klávesou) nebo automaticky s volitelnou časovou periodou. S výhodou lze využívat funkční klávesu F8 (např.přímo z režimu R nebo L). Též je možný přímý přechod z režimu V do režimu L.

Při použití režimu S vzniká na disku každých 10 minut od začátku řešení soubor typu RST, který umožňuje pokračovat v řešení buď po násilném přerušení pomocí CTRL/S CTRL/C nebo po výpadku napájení.

Restart se provádí zadáním režimu S a program (podle souboru typu RST) pokračuje od místa, kde předtím skončil. Může následovat dotaz

OUT existuje, (0=append, 1=delete)?

Nyní zadáme 1, má-li se předchozí výstup vymazat (delete). Pokud zadáme 0 (obvyklejší případ), připojí se (append) nové výstupy k již existujícímu souboru. Při residentním nebo souborovém spuštění VKSACHu se dělá vždy automaticky append.

V případě, že chceme přidat do souboru typu INP již odstartovaného v režimu S další pozici(e), stačí řešení přerušit, uložit RST soubor a znovu přejít do režimu I. Tam na dotaz

INP existuje, (0=append, 1=delete)?

zadáme 0 a další pozice jsou přidávány na konec tohoto souboru. Po skončení zadání zvolíme opět režim S bez mazání výstupu a řešení pokračuje dál.

 

4. Zadávání pozic (v režimech R,Q nebo I)

Po výpisu

Bílý ?

se zadá pozice bílých kamenů, např.

Kh1Dh2Sg2Pf5Ph4<ENTER>

a po

Černý ?

následuje zadání černé pozice, např.

Kh5Pg4Pg6Ph6<ENTER>

Platí konvence, že jako první musí být uveden král, pořadí dalších kamenů je libovolné. Pokud není jako první uveden kámen označený znakem K, chápe se král jako neortodoxní s pohyblivostí toho kamene, který je zadán jako první, což umožňuje řešit úlohy např. s jezdcovým či vežovým králem. Nad neortodoxními králi jsou zobrazovány křížky.

Mezi kameny nesmí být mezery, malá písmena jsou automaticky konvertována na velká.

 

5. "Modifikace"

Po správném zadání pozice se vypíše

Modifikace?

Je možné editování zadané pozice s velmi mocným aparátem příkazů. S výhodou jej využijeme třeba u dvojníků, ale zejména při překlepech, chybách v notaci a nutnosti opravit zadanou pozici bez toho, abychom ji museli zadávat celou znovu.

Též je třeba upozornit na případ interaktivního skládání, kdy se obejdeme bez šachovnice a můžeme se velmi rychle dopracovat ke korektní pozici. Cyklus <složení úlohy zaslání do časopisu vrácení nekorektní pozice redaktorem>, trvající někdy i měsíce, se zde redukuje na <zadání pozice přezkoušení oprava v "Modifikaci" další přezkoušení atd.>, přičemž výsledkem je zaslání korektní pozice do časopisu.

Příkazy v nabídce "Modifikace?"

5.1. Editování

<ENTER> pozice zadána správně (o.k.), přechod na zadání výzvy

E přechod na zadání nové pozice (též F2)

% přezobrazení pozice (smysl má např.po použití CTRL/T v řešení apod.)

B změna barev (též F6)

#s otočení kolem sloupce s (A..H)

#r otočení kolem řady r (1..8)

+bpxy přidání bílého kamene p na pole xy

+cpxy přidání černého kamene p na pole xy

-xy odstranění kamene z pole xy

Xxyab přemístění kamene z pole xy na pole ab

Hxyab prohození kamenů na polích xy a ab

> posun pozice doprava (též F12)

< posun pozice doleva (též F11)

^ posun pozice nahoru (též F4)

! posun pozice dolů (též F3)

0 dočasné uložení pozice do pracovní paměti (při přechodu do základní nabídky je tato paměť nulována, [proto je obecně lépe ukládat do souboru INP] příkaz "0" je ale vhodný např. při přehrávání variant vícetahové úlohy, kdy např.uložíme pozici po úvodníku, ke které se je pak možno přímo vrátit)

1 návrat k uložené pozici

2 záměna uložené a aktuální pozice

5.2. Přímá změna režimu

Jsou možné přímé přechody do některých režimů (není nutné chodit přes základní nabídku):

I inicializační režim

R režim R

Q režim Q

T režim T (prohlížení souboru typu INP)

L režim L (prohlížení souboru typu OUT)

V režim V (přehrávání řešení ze souboru typu OUT) (též F8)

V režimech T a L je možno zvolit pořadové číslo úlohy

(1..9999) v příslušném souboru, dále pomocí

-1 přejít do režimu R (s příslušnou pozicí) (též F1)

-2 vymazat pozici v souboru (pokud by šlo již o poslední pozici v souboru, je nutno vymazat celý soubor v režimu volby souboru pomocí "E")

ENTER přejít na další pozici v souboru

D výpis jmen souborů INP, OUT a RST v aktuálním adresáři

N pokračování v režimu S od následující pozice, pokud bylo řešení předtím přerušeno s přechodem do režimu R.

O změna typu zobrazení na monitoru (je vhodná při použití redukčního algoritmu ke zobrazování obrazců) (též F7)

 

 

5.3. Jiný rozměr a typ šachovnice

S definování neortodoxní šachovnice

např.5x5, prstencová

Šachovnice m ? 5

n ? 5

Typ? 3 0=normální

1=vertikálně válcová

2=horizontálně válcová

3=prstencová

Nebo

5.4. Nové kameny

K definování nových exokamenů

Standartně jsou definovány exokameny C=cvrček, T=tátoš, L=lion, M=mao, O=moa, R=růže, E=equihopper, N=tátošový cvrček, H=locust, W=vezír, F=fers, B=berolina. Pro nový exokámen se zvolí symbol a dále se definuje pohyblivost tzv.charakteristikou a změnou souřadnic x,y.

Charakteristiky jsou

0 bodové kameny

1 liniové kameny

2 čínské kameny

3 typu cvrček

4 typu lion

11 typu locust

12 elan

13 klokan

14 CAT

Příklad:

leo symbol kamene? Z

počet charakteristik? 2

charakteristika 1? 2

souřadnice x ? 0

y ? 1

charakteristika 2? 2

souřadnice x ? 1

y ? 1

symbol kamene? <ENTER>

 

Zkrácené příklady pro další časté kameny:

zebra Z 1 0 2 3

velbloud X 1 0 1 3

žirafa G 1 0 1 4

vezír W 1 0 0 1

fers F 1 0 1 1

věžový cvrček Q 1 3 0 1

pao X 1 2 0 1

vao Y 1 2 1 1

amazonka A 3 0 1 2 1 0 1 1 1 1

 

Po opuštění VKSACHu přestávají přechodné definice uživ. exokamenů platit. Pokud chceme použít uživatelsky definované exokameny též v režimu S po odchodu z VKSACHu a jeho opětném zavolání (nutné např. při residentním spuštění), je třeba provést definici exokamenů v režimu I. V tomto případě se automaticky vytvoří po návratu do "Modifikace?" RST soubor, který obsahuje zadané definice a který bude při dalším spuštění příslušného souboru načten. Pokud provádíme definice v režimu R, jsou tyto exokameny použitelné jen do odchodu z VKSACHu.

Jiný způsob uložení definic exokamenů zadaných v režimu R je následné spuštění řešení v režimu S, jeho přerušení a uložení RST souboru, ve kterém jsou definice exokamenů již obsaženy a budou použitelné i po odchodu z VKSACHu a novém spuštění tohoto souboru, např. i residentním.

 

6. "Výzva"

Pokud zadaná pozice odpovídá našim představám, tj.na předchozí dotaz jsme zadali ENTER, vypíše se

Výzva?

a nyní je třeba zadat výzvu včetně podmínek úlohy. Tato řádka se skládá ze tří částí

výzva/parametry'komentář<ENTER> (parametry a komentář jsou nepovinné)

V první části je uveden jeden z typů výzev

#n mat n-tým tahem (1<= n <=62)

h#n pomocný mat

s#n samomat

sh#n seriovotahový pomocný mat

r#n reflexní mat

semir#n semireflexní mat

ss#n seriovotahový samomat

sr#n seriovotahový reflexní mat

=n pat

h=n pomocný pat

s=n samopat

sh=n seriovotahový pomocný pat

r=n reflexní pat

semir=n semireflexní pat

ss=n seriovotahový samopat

sr=n seriovotahový reflexní pat

Za touto specifikací může následovat lomítko a kombinace dále uvedených parametrů. Za některými z parametrů (RS*KV^CM) může následovat číslo v rozsahu 0 až 9, které blíže specifikuje uvedený parametr. Pokud bezprostředně za parametrem nenásleduje číslo, je tento parametr chápán, jako by byl s parametrem 0.

Některé jiné parametry vyžadují detailnejší specifikaci uvedenou v závorkách, přičemž syntaxe je specifická pro každý parametr. Nedodržení předepsané syntaxe vede k chybovým hláškám.

Po zadání výzvy (a pokud nejsme v režimu I) se spouští řešení úlohy (po stisku <ENTER>). Případný výpis znaku "*" znamená, že nelze použít některé optimalizace, které (zejména u ortodoxních úloh) značně urychlují řešení.

Parametry po "Výzva?" ĺ Příklady

6.1. Základní parametry

H hledání hrozeb a eliminace variant nebránících hrozbě

v n#,n=, automaticky se hledají též všechny duály v řešení #2/h

Pokud kombinujeme s parametrem D, hledají se i všechny pokusy

(tahy, které mají právě 1 vyvrácení) a duály v nich ĺ #2/dh

D u #n hledání duálů a vyvrácení pokusů, maximálně

2 duály a 2 vyvrácení tahů ĺ #2/d

všechny varianty po ručním provedení úvodníku ĺ #2/dz

u s#n hledání duálů ĺ s#2/d

+ s param.H výpis též šachujících pokusů ĺ #2/dh+

Z převedení tahu na druhou stranu (např.pom.mat 2.5 tahem) h#3/z

Vp rozsah variant 0<=p<=9 (v přímých úlohách) ĺ #2/v1

v1...pouze úvodník, předdefinovaná hodnota (pokud není uvedeno) je v2 (tj.do 2.tahu bílého)

*p u h#n a sh#n max. p+1 řešení ĺ h#3/*2

pokud není uvedeno, je p=20, v případě potřeby výpisu všech řešení je třeba zadat pouze * (bez číselného parametru)

E povolení e.p.v 1.tahu (po předchozím přemístění pěšce) h#2/xc7c5e

Xabcd lokální přemístění kamene z pole ab na pole cd

(podle pravidel příslušného exošachu na rozdíl od X #3/xe4f5

z "Modifikace")

Lze kromě jiného využít pro úlohy s braním mimochodem v prvním tahu (viz E) a pro úlohy bez bíleho krále, které řešíme tak, že zadáme bílého i černého krále na stejné pole a potom zadáme Xabab, kde "ab" je toto pole. Kromě správného zobrazení a jednoduššího zadání je potom správný i tisk diagramů.

Tabcd řešení počínaje tahem z pole ab na pole cd ĺ #7/te5e8

(lze použít k pokračování řešení přerušené úlohy, pokud jsme nevytvořili soubor RST)

' komentář #2/'komentář

? Podmíněné řešení úlohy podle výsledku řešení předchozí úlohy v režimu S. Příznak "error" je nahozen v případě h#n pokud byl překročen počet řešení povolených pomocí "*", v případě ostatních výzev, pokud bylo více než 1 řešení. Errorový příznak je nulován při startu řešení úlohy, která nemá "?".

Lze s výhodou použít např. u dvojníku:

pozice A (1) h#6/rs*1

pozice B (2) h#6/rs*1?

pozice C (3) h#6/rs*1?

jiná úloha (4) h#4/rs

Pokud je pozice A korektní, řeší se úlohy (1),(2),(3),(4). Pokud je A nekorektní, řeší se pouze (1) a (4). Pokud by byla A korektní a B nekorektní, řeší se (1),(2),(4) a v případě korektnosti A,B a nekorektnosti C se řeší všechny pozice. V režimu R nemá tento parametr význam.

; výpis řešení v duplexové notaci (po @ @ B v "Modifikaci")

 

6.2. Podmínky

M madrasi ĺ #2/m

M1 madrasi rex inclusiv ĺ h#2/m1

C circe ĺ h#2/c

C1 opačné circe (malefique)

C2 výměnné circe (PWC)

C3 kukaččí circe (COUCOU)

C4 mars circe

C5 circe equipollent

C6 circe symetrické

G sentinelles

^ maximálník (u samomatů a n-tažek) ĺ s#4/^

^1 minimálník

#2/@(ie4)h

h#2/@(g)

A Povolení proměny pešců na horizontální válcové a prstencové šachovnici.

U povolení neutrálních kamenů. Neutrální kameny se zadávají současně jako bílé i černé (tedy 2x), přípustný je i neutrální král. Po spuštění řešení jsou i specificky zobrazeny. Přípustná je kombinace s circe. Použití redukčního algoritmu není možné.

Neutrální kameny vzhledem k principu zadávání a dvojitému kódování přinášejí určitá omezení. Nejde použít režim přehrávání V. V "Modifikaci" není možné tyto kameny přemísťovat (X) ani přidávat (+), jen znova zadat celou pozici. Odstranění kamene je možné pouze po dvojím použití příkazu -, posuny a otáčení pozice fungují bez problémů.

 

6.3. S algoritmus

Je vhodné jej vždy používat u h#n, h=n, sh#n, sh=n, ss#n, ss=n, kde n>=3, výrazně urychluje řešení.

S reprezentující možnosti ĺ h#3/s

(z možností A B C, C B A pro různé kameny, resp. A1 B A2, A3 B A4 pro stejný kámen, tj.pokud je možno tahy přehodit nebo je cesta nejednoznačná, uvažuje jen jednu možnost a v případě nalezení řešení, je vypsána hláška "duál")

S1 jednoznačná (autorská) řešení ĺ h#4/s1

(při volbě S je kontrola korektnosti 100%, při volbě S1 se nemusí najít příp.vedlejší řešení, je však řádově rychlejší, zejména u sériovotahových úloh)

Nejefektivnější je kombinace S-algoritmu s redukčním algoritmem, následuje porovnání časů řešení při RS1 (pouze jednoznačná řešení) a RS (kompletní řešení):

6.4. Redukční algoritmus

Je vhodné jej využívat pro pom.maty h#n n>=4 vždy ĺ h#n/rs

n=3 pokud je volná pozice h#3/rs

jinak jen ĺ h#3/s

n=2 vždy bez red.alg. h#2

R redukční algoritmus (u h#n a sh#n, event.h=n a sh=n) ĺ h#5/rs sh#20/rs

Řešení hledáním matových obrazců, obvykle se užívá bez číselného parametru, dále jsou možné parametry:

R1...speciální podmínky (viz }, bez } optimalizace v sh#n)

R2...bez rošád

R3...R1 a R2

R4...pouze hledání obrazců bez řešení

R8...speciální exomasky pro bodové exokameny a tátošového cvrčka

Redukční algoritmus lze použít též v #n, ale tam má smysl jen pro úlohy s málo kameny.

V redukčním algoritmu lze používat kromě ortodoxních kamenů i exokameny, ovšem jen takové, pro které jsou vygenerovány příslušné exomasky (tabulky možné účasti daného kamene v matové síti) a tabulky dostupnosti polí (v minimálním počtu tahů).

Přípustnými exokameny pro redukční algoritmus jsou kromě cvrčka všechny bodové a liniové kameny s jednoduchou pohyblivostí (zebra, žirafa, tátoš, mehari, ...), tátošový a vežový cvrček, růže, lion, equihopper, pao, vao, leo a kombinovaný kámen s pohyblivostí jezdce a ferse. Další exomasky je možno vytvořit pomocí programu EXOR1 a to v principu pro libovolný exokámen V redukčním algoritmu musí být černý král ortodoxní, pro bílého krále to není podmínkou (dokonce lze použít i pro úlohy bez bílého krále). Redukční algoritmus lze použít ještě i pro fersového nebo vezírového černého krále. Pro černého krále s jinou pohyblivostí lze redukční algoritmus použít jen k případnému hledání vedlejších řešení, ale správné přezkoušení není zaručeno (podobně jako u jiné tzv.nepřípustné kombinace podmínek). Red.algoritmus lze kombinovat též s circe (normálním, bez exokamenů).

V nabídce "Modifikace?" je vhodné zvolit v případě užití redukčního algoritmu volbu 2 šachovnic pomocí "O" (F7), potom jsou na pravé šachovnici průběžně zobrazovány probírané obrazce.

Po dořešení vypadá obrazovka takto (úloha je korektní):

Pokud bychom chtěli rychle najít pouze řešení, lze kombinovat s S1 algoritmem

 

Redukční algoritmus je velmi mocný prostředek pro řešení i vícetahových úloh. Pracuje naprosto obecně a obrazce jsou vyhledávány automaticky. Při experimentování a získání určité praxe dojdeme občas k potřebě ručního zadání jen některých obrazců či možnosti atypického nastavení některých parametrů. I to lze a možnosti jsou dále popsány.

 

W h#4/rsw

Bez tohoto parametru funguje redukční algoritmus tak, že je zakázána optimalizace č.7 a povolen princip redundance masek pro všechny úlohy bez cvrčků a je povolena optimalizace 7 a blokován princip redundance masek pro úlohy se cvrčky.

Parametr W nastavuje druhou z výše uvedených možností pro všechny úlohy. Typickým případem může být obrazec Kg2Se2Jf3-Kh4, který by byl v případě použití optimalizace č.7 vyloučen, ovšem mohlo by dojít ke ztrátě řešení, jelikož na polích g4 a h5 mohou stát nezúčastněné černé kameny.

Při použití principu redundance masek (tj.vyloučení takových masek, které dynamicky do vytvářeného obrazce nic nového nepřidávají) nemůžeme proto obecně použít optimalizaci č.7 (krytí pole v matové síti kamenem, který je přerušen bílým kamenem, zúčastňujícím se matového obrazce) předdefinované nastavení.

Princip redundance masek přináší ovšem úsporu cca 30% obrazců, takže při jeho vypuštění můžeme sice použít optimalizaci č.7, ale řešení se může prodloužit.

Parametr W je proto určen zejména pro experimenty nebo pro nastavení v takovém případě, kdy se dá odhadnout, že optimalizace 7 přinese větší úsporu času než vynechání principu redundance masek. Takový odhad je možný až po získání značných zkušeností.

Použití parametru W nemá vliv na správnost řešení a jeho význam je pouze časový. W se doporučuje používat v sh#n pokud má bílý aspoň 1 liniovou figuru, příp. v h#n při kombinaci bílý V+S, příp.S+J, ale neplatí to univerzálně.

Ze všech uvažovaných obrazců šrafovaná plocha označuje obrazce, které budou probírány při použití parametrů R, resp. RW. V případě použití pouze R označuje prázdná plocha obrazce vylučitelné principem redundance masek. Pokud použijeme RW, označuje prázdná plocha obrazce vylučitelné optimalizací č.7.

 

 

{} speciální parametry (podmínky 1,2,4 lze též kombinovat)

1 když R1 (h#n, h=n) vyloučení obrazců s proměnami tohoto kamene

R1{e71,e21}

2 když R1 vyloučení všech obrazců s tímto kamenem (samozřejmě nelze použít pro černého krále)

R1{e42,g52}

4 když R1, pak pokud se kámen z daného pole vyskytuje v obrazci, smí být pouze na zvoleném poli

R1{g14-e5,f34-g2} (tj.kámen z pole g1 může být jen na e5)

8 v #n a s#n (n >= 3) privilegované vyvrácení černého kamene, který stojí v počáteční pozici na prvním zadaném poli a táhne na druhé zvolené pole

e28-f3} (jako první se bude za černého uvažovat tah e2f3 vhodnou volbou se může urychlit řešení)

% uživatelem definované obrazce pro redukční algoritmus

%([A1C3,B2D4,E2G4=J][A1A1])

V případě použití <> místo [] je obrazec chápán jako multiobrazec a reprezentuje 8 symetrických obrazců, vzniklých otáčením, přičemž lze použít i pro obecnou šachovnici MxN. Je možné další rozšíření, vhodné pro permutaci kamenů, zejména stejných hodnot, přičemž kámen je označen znakem *. Celkem jsou tedy 4 možnosti použití parametrů (a to v kombinaci při řešení h#n nebo sh#n pomocí R nebo při použití &):

%([a1e4,b1e5,c2d7,g4h8]) 1 obrazec

%(<a1e4,b1e5,c2d7,g4h8>) 8 obrazců (rotace)

%([a1e4*,b1e5*,c2d7,g4h8*]) 3! obrazců (permutace)

%(<a1e4*,b1e5*,c2d7,g4h8*>) 8.3! obrazců (permutace a rotace)

Znaky * mohou být různé pro každý z obrazců, maximálně jich muže být 6 pro 1 obrazec.

 

 

6.6. Další parametry

| povolení nepřípustné kombinace parametrů na riziko uživatele

h#4/crm| circe a madrasi s redukčním algoritmem (normálně není funkční, ale je možno takto najít např.vedl.řešení)

(podobně např. válcová šachovnice a red.algoritmus apod.)

N(parametry) rychlé částečné řešení vícetažek ĺ #8/n(x1)

S maska šachů (v #8 pouze šachy s vyjímkou 1.tahu S01111111)

H maska jednotahových hrozeb

Vi max.počet volných polí č.krále (předdefinovaná hodnota je 8)

R pouze do prvního řešení

X stupeň (1 až 5), 0 je předdefinovaná hodnota

X1 S11111111 pouze šachy

H00000000

X2 S01111111 pouze šachy s vyjímkou 1.tahu bílého

H00000000

X3 S01111101 x2 s vyjímkou předposledního tahu

H00000000

X4 S00000000 pouze šachy a jednotahové hrozby

H11111100

X5 S00000000 x4 s vyjímkou 1.tahu

H01111100

Kn u pom.patů s využitím S max.počet černých kamenů na konci řešení=n. Lze použít pouze pro hledání vedlejších řešení, nikoliv ke 100% kontrole korektnosti.

Q pomocný mód, kdy se po každém provedeném tahu zobrazí stav pozice a pokračuje se po stisknutí mezery, příp. klávesou "X" je možno tento mód zrušit (a CTRL/T).

!(xy) Aktivace modulu VARIAB pro kámen stojící na poli "xy". Je možno použít pouze v režimu R a řeší se postupně 64 úloh vzniklých přemístěním kamene z pole xy na všechna pole šachovnice.

Kontroluje se legálnost pozice a řeší se postupně úloha s danou výzvou od počtu tahů 1 do nalezení alespoň 1 řešení nebo do vyčerpání maximálního počtu tahů, uvedeného při zadání výzvy.

Např. sh#20/!(e4)

řeší postupně pozice s kamenem z pole e4 na polích a1,a2,a3, Tuto metodu lze využít též pro skládání úloh.

!() Podobně jako předchozí případ, ale pouze pro zadanou pozici bez přemísťování kamenů. Je vhodné např. pro úlohy typu sh#n.

 

 

7. Použití funkčních kláves

K zjednodušení manipulace (pro nejčastěji používané výzvy) jsou předdefinovány textové řetězce pro funkční klávesy v nabídce "Výzva" takto:

F1 h#2

F2 #2/dh

F3 h#3/rs

F4 h#4/rs

F5 h#5/rs

F6 h#6/rs

F7 #2/h

F8 #3/h

F9 opakování posledního komentáře

F10 opakování poslední výzvy (výzva + komentář F10 F9)

V nabídce "Modifikace" je předdefinování funkčních kláves následující:

F1 -1<enter>

F2 E<enter>

F3 !<enter> dolů

F4 ^<enter> nahoru

F5 @<enter>

F6 B<enter>

F7 O<enter>

F8 V<enter>

F9 +b

F10 +c

F11 <<enter> vlevo

F12 ><enter> vpravo

Navíc je možno i u zadávání pozice (Bílý ?, Černý ?) použít klávesu F9 pro poslední ručně zadanou pozici bílých, resp. F10 černých kamenů, příp.klávesy F11, F12 (počáteční postavení partie). Řetězce příslušející klávesám F9 a F10 nejsou zničeny při příp. prohlížení souborů pomocí T a L, takže je stále uchována původní pozice.

Pro běžné editování při zadávání řádky ukončované ENTER je možno použít kurzorových šipek, kláves HOME a END, klávesy DEL pro vymazání následujícího znaku, klávesy pro vymazání předchozího znaku a klávesy INS pro vymazání celé řádky.

 

8. Přerušení (interrupt) řešení

Činnost programu je možno kdykoliv přerušit pomocí postupného stisknutí kláves CTRL/S CTRL/C (reaguje okamžitě) za předpokladu, že probíhá řešení nebo klávesou <ESC> je možno přejít do základní nabídky, pokud program právě čekal na zadání dat z klávesnice.

V případě, že se řešila úloha, vypíše se

řešení přerušeno

a je možno zadat některý z parametrů

1 uložení souboru RST

<ENTER> zastavení řešení úlohy a přechod na další úlohu v režimu S, event.návrat do "Modifikace?" v režimu R

R zastavení řešení úlohy v režimu S a přechod do režimu R s touto úlohou

<ESC> do základní nabídky (úvod.dialogu)

Po restartu řešení pokračuje od místa, kde bylo přerušeno (čas navazuje a příp.výstupy se připojují k souboru OUT)

Pokud chceme předčasně ukončit residentní VKSACH, je možné použít program ABOVKS, který je nejlépe zavolat 2x za sebou. První volání simuluje přerušení (CTRL/S CTRL/C) residentního VKSACHu s uložením RST souboru. Nové volání ABOVKS (nebo libovolného programu) už slouží jen k uvolnění paměti a kontrole, zda se residentní VKSACH skutečně podařilo zabortovat. Dále je možné opětovné zavolání VKSACHu a pokračování od stavu v RST souboru. Pokud bychom měli nainstalované 2 residentní VKSACHy, potom první volání ABOVKS zabortuje posledně nainstalovaný VKSACH, další volání ABOVKS prvně nainstalovaný VKSACH a třetí volání ABOVKS uvolní paměť.

Pokud používáme Norton Commander, je vhodné používat v Menu po F2 např. (umístíme do Menu file Main)

F1 na volání VKS

F10 na volání ABOVKS

ABOVKS

I při souborovém spuštění je možno řešení přerušit, když naslepo zadáme CTRL/S CTRL/C a počkáme, až se ozve (rozsvítí) disk (max. 2s) a potom stiskneme klávesu "1", čímž se uloží RST soubor. Po opětném spuštění (tj. C>vks soubor) řešení pokračuje od místa, kde bylo přerušeno. Po skončení řešení je soubor RST automaticky vymazán.

Pokud chceme pouze pozastavit rolující výpis na obrazovce (při interaktivním spuštění), stačí stisknout CTRL/S (akceptování je signalizováno v levém horním rohu obrazovky), pokračování je libovolnou klávesou (s vyjímkou CTRL/S).

Výpis je dále pozastaven automaticky, pokud je výstup pouze na obrazovku a pokud by měla tato obrazovka odrolovat (pokračuje se stiskem libovolné klávesy). Stane se tak ovšem pouze poprvé, dále se výpis pozastavuje v případě potřeby ručně pomocí CTRL/S (pouze při prvním rolování hrozí, že bychom to nestihli).

Obecně lze říci, že k automatickému pozastavení výpisu dochází při prvním rolování po nulování pole obrazovky pro výstup řešení. Toto automatické pozastavení je pak odblokováno vlastním rolováním nebo zadáním řádky ukončené ENTER několik řádek pod dolním okrajem výstupního pole. Dále po uplynutí cca 8 sekund, pokud jsme v automatickém stopu, je stop také odblokován. K automatické pauze nedojde též během řešení, pokud již toto řešení trvá déle jak 5 s.

9. Pomocné zobrazování

Během řešení je možno získat informaci o právě prováděném 1.tahu pomocí CTRL/V a informaci o počtu uvažovaných tahů a tahů přecházejících do další úrovně pomocí CTRL/B ve tvaru

a1 b1

a2 b2

.

ai bi

Pomocí CTRL/T (funguje způsobem ON/OFF) je možno při nastavení O zobrazit na druhé šachovnici prováděné tahy (tento režim však velmi zdržuje), CTRL/X funguje jako zavedení režimu L (při použití redukčního algoritmu ruční volba obrazců, zadává se Y nebo N, příp.X pro přechod k automatické volbě).

Při levém okraji obrazovky je s periodou 55 ms inkrementována buňka, která signalizuje, že program stále běží (ovšem pouze při monochromatickém zobrazení, nikoliv v barvě). Dlouhá čárka pod touto buňkou znamená, že je právě aktivní redukční algoritmus, krátká čárka, že se generují, provádějí a vracejí tahy. Jiné symboly signalizují práci s databází nebo ortodoxní optimalizaci.

Pole pod první šachovnicí znázorňuje pro prvních 6 úrovní relativní počty provedených tahů a v případě, že jsou použity algoritmy R nebo S, též jejich efektivitu. Tato informace je podobná jako po CTRL/B, přičemž v jednotlivých pásech odpovídá jeden bod jednomu tahu (1 pole šachovnice odpovídá 24 tahům) a hodnoty jsou určeny takto:

-----------..........................

celková délka ai / bi-1, délka tučné části (---) bi / bi-1

V případě nastavení dvou šachovnic jsou údaje rozděleny pro tahy obou stran pod levou a pravou šachovnicí. Podle těchto grafických informací lze velmi snadno provést odhad celkového času řešení úlohy.

 

10. Řešení chybových situací

10.1. Možné chybové hlášky

číslo text

chyby

*1 Chybný počet kamenů

*2 Chybný počet tahů

*3 Chybná výzva

*4 Nedefinovaný kámen

*5 Chybné pole

*6 Chybná pozice pěšce

*7 Dva kameny na jednom poli

*8 Nedostatek dynamické paměti při generování tahů

*9 Nedostatek dyn.paměti pro dyn.struktury

*10 Nedostatek dyn.paměti pro reduk.algoritmus

*11 Nedostatek dyn.paměti pro exomasky

*12 Nemožná pozice

*13 Chyba v příkazech X,T,E

*14 Ilegální redukce

*15 Při použití & není pozice mat, resp.pat

*16 Ilegální parametry

*17 Ilegální charakteristika při zpětné generační proceduře

*18 Nepřípustný exokámen

*19 Nepřípustná kombinace podmínek

*20 Nedostatek dyn.paměti pro dyn.procedury

*21 Přeplnění struktur v R

*22 Chyba při použití HIMEM.SYS

*23 Málo EXTENDED MEMORY

Případné chybové hlášky s číslem větším než 100 jsou bez textu a mohou vzniknout jen při chybné manipulaci s programem.

 

10.2. Doporučení při residentním spouštění VKSACHu

Při provozování residentního VKSACHu je možné jinými programy prohlížet soubory INP nebo OUT, příp. spustit interaktivní VKSACH na RST soubor v režimu W a zjistit tak, jak je daleko (nesmíme ale ukládat RST soubor tedy po přerušení odejít pomocí ESC).

Případné zápisy do těchto souborů je ovšem třeba dělat opatrně, zejména není dovoleno psát do souboru OUT (např.editorem), pokud tento není uzavřen. Naproti tomu přidání další úlohy do souboru INP je možné, i když je tento soubor vstupem právě provozovaného residentního VKSACHu.

RST soubory uložené residentním VKSACHem i klasickým způsobem jsou kompatibilní, je tedy např. možné pokračovat v řešení RST souboru uloženého při residentním spuštění např. v režimu S při interaktivním spuštění nebo naopak. Je k tomu třeba ovšem poznamenat, že nejsou a nemohou být kompatibilní RST soubory od různých verzí VKSACHu, např. od verze 7.7 a 7.8 (novým překladem dochází k posunu kódu i změně adres proměnných) a případný pokus o restart je hlídán a signalizován chybovou hláškou.

Pokud bychom tedy chtěli dokončit řešení RST souboru pocházející od starší verze VKSACHu, je do okamžiku dořešení nutno tuto verzi (VKS.EXE) zachovat.

 

Experimentálně byly zjištěny max.délky úloh z hlediska kapacity paměti.

Pro 16+16 kamenů jsou nejdelší řešitelné úlohy

VKS VKSMAX

#31 #51

sh#44 sh#62

ss#43 ss#62

Nejdelší řešitelné úlohy red.algoritmem

VKS VKSMAX

h#8/rs h#17/rs pro 16+16 kamenů

sh#20/rs sh#35/rs

h#9/rs h#19/rs pro 16+1 kamenů

sh#62/rs sh#62/rs

h#23/rs h#40/rs pro 2+16 kamenů

sh#24/rs sh#40/rs

Ve většině případů bude omezujícím faktorem čas (ne paměť). Pouze některé sh#n (např.sh#30/rs1) nelze řešit pomocí VKS, ale je možné použít verzi VKSMAX.

 

10.4. Testovací příklady

K dispozici je soubor testovacích příkladů VKSTEST.INP, časy řešení je možno porovnat se souborem VKSTEST.OUT (na 486/66 trvá řešení všech cca 200 pozic něco přes 10 minut).

K analýze časů řešení i v rozsáhlých souborech OUT (až 3000 pozic) je možno použít program STATIS, který vypíše na obrazovku statistiku souboru OUT ve tvaru:

Počet pozic s časem 220

Celkový čas 11:43.0

Průměrný čas 3.2

Výzva Počet úloh Průměrný čas Max.čas

-------------------------------------

#2 54 0.2 3.0

H#2 30 5.6 1:11.0

H#3/R 12 3.9 27.0

H#4/R 23 6.0 57.0

H#4/RS1 1 3.0 3.0

H#5/R 10 4.4 14.0

H#6/R 7 3.3 12.0

H#7/R 2 0.5 1.0

H#8/RS1 2 11.0 21.0

H#9/RS1 2 0.0 0.0

H#9/R 1 23.0 23.0

-------------------------------------

Program se volá takto:

STATIS soubor

Výstup je možno též přesměrovat do souboru

STATIS soubor.out >soubor.sta

 

11. Příklady optimálních zadání

dvojtažka, hrozby a duály #2/h

novostrategická, svůdnosti, pokusy #2/dh

s výpisem všech vyvrácení #2

#2/d

pouze úvodník(y) #2/v1

trojtažka #3/h

#3

vícetažka #4 ("h" je obvykle nevýhodné)

#5

.

pomocný mat 2.tahem h#2

ortodoxní s málo kameny h#2/r

pomocný mat 3.tahem h#3/rs

pokud je použití redukčního algoritmu nevýhodné ĺ h#3/s

(pokud černý král nemá žádná volná pole nebo má-li bílý více než 2 liniové kameny)

h#4/rs

h#8/rs

pouze jednoznačná (autorská) řešení h#6/rs1

h#9/rs1

.

.

seriový pom.mat sh#15/rs

pouze jednoznačná řešení sh#26/rs1

samomat s#2

s#2/d

s#2/v1

reflexní mat r#3/d

semireflexní mat semir#2

seriovotahový samomat

s pouze jednoznačnými řešeními ss#5/s1

kompletně vyřešený ss#6/s

seriovotahový reflexní mat s

pouze jednoznač.řešeními sr#5/s1

pomocný mat 2.tahem circe h#2/c

pomocný mat 2.tahem madrasi h#2/m

rex inclusiv h#2/m1

pomocný mat 4.tahem s imitátorem g5 h#4/@(ig5)

pomocný mat 3.tahem na mřížkové

šachovnici h#3/@(g)

samomat 4.tahem, maximálník

s hledáním duálů s#4/^d

skládání pom.matů z mat.obrazce h#20/&(x) (délka je zde v půltazích)

pro exokameny h#20/&(x)r

h#3, 2 řešení h#6/&(x)r$(a8a8,b6c7,c7b6,b8a7)

(např.pro pozici Kb6Jc7-Ka8Jb8)

.

.

12. Kompletní příklad zadání pozic

12.1. přímé zadávání

komentář

Režim? R |

Bílý? ka1se2jb2jd4tc1cb5cc6cf7pb7pd2pf2<ENTER> | 1183 Probleemblad 2/1987

Černý? ke4se5th2jf4jf5cb6pc4pc5pd6pe3<ENTER> | V.Kotěšovec, #2

|

| chybí Cc2 !

Modifikace? +bcc2<ENTER> | možno zadat i jako F9cc2

Modifikace? <ENTER> |

Výzva? #2/h<ENTER> | F7 hrozby a duály

| vypíše se řešení

Modifikace? <F2> | nebo e<ENTER>

|

Bílý? ka6pb7<ENTER> | 1171 Probleemblad 2/1987

Černý? ke5sd5sf4ja8pa4pd4pd6pe6pf5<ENTER> | N.A.Bakke, h#2 duplex

Modifikace? <ENTER> |

Výzva? h#2<ENTER> | zadáme pomocí fční klávesy F1

| řeší se

Modifikace? b | změna barev

Modifikace? @ | otočení o 90 stupňů

Modifikace? @ |

Modifikace? <ENTER> |

Výzva? h#2/;<ENTER> | výpis v duplexové notaci

| zadáme takto: F10/;

| řeší se

Modifikace? <ESC> | do základní nabídky

12.2. zadání více pozic

Režim? I |

Soubor? example<ENTER> | zadává se bez typu

| typ je INP

Bílý? ka2dh8vb5sa5sc2jg4jg7pb3pc6pg6<ENTER> | 9187 Probleemblad 2/1986

Černý? kd4ve5vf6pa7pd6ph6<ENTER> | G.Bakcsi #2, b) Jg7->g5

Modifikace? <ENTER> | o.k.

Výzva? #2/h'Bakcsi<ENTER> | použijeme funkční klávesu F7

------> uložit(0=ne,1=ano)? 1 | do souboru typu INP

Modifikace? xg7g5<ENTER> |

Modifikace? <ENTER> |

Výzva? #2/h'pozice b)<ENTER> | F10 opakování poslední výzvy

------> uložit(0=ne,1=ano)? 1 |

Modifikace? <F2> | nebo e<ENTER>

|

Bílý? Kb1pb2jb3jb6<ENTER> | 1071 Probleemblad 2/1986

Černý? kc6pb5<ENTER> | Vermissen, h#3

Modifikace? <ENTER> |

Výzva? h#3/rs'Vermissen<ENTER> | F3, s redukčním algoritmem !

------> uložit(0=ne,1=ano)? 1 |

Modifikace? <F2> | nebo e<ENTER>

|

Bílý? Ka8vb8ca7cd3cd5ce8ch4<ENTER> | 1076 Probleemblad 2/1986

Černý? Kc4SG4je2pd4cf8<ENTER> | Montanari, h#2

Modifikace? <ENTER> |

Výzva? h#2<ENTER> | rychleji zadáme pomocí F1

------> uložit(0=ne,1=ano)? 1 |

Modifikace? <ESC> | ukončení režimu I

|

Režim? S | spuštění řešení

soubor? example<ENTER> |

| řeší se

Režim? L |

soubor? example<ENTER> | výpis řešení

 

 

14. Skládání úloh

Použití počítače pro skládání úloh není na rozdíl od řešení rutinní záležitostí. Je k tomu třeba "skladatelského citu" a kvalitních výsledků se lze dopracovat až po získání značných zkušeností a uplatnění svých kombinačních schopností. Počítač "sám od sebe" úlohu nesloží!

Pro skládání je možno použít 2 metody. Zermelův algoritmus je sice rychlejší než retrográdní postup, ovšem retrográdní postup umožňuje vytváření úloh s libovolným počtem kamenů a je podstatně obecnější. Např.pro úlohy se 4 aktivními kameny by bylo třeba při použití Zermelova algoritmu 16MB RAM, resp. 2.5MB při využití různých symetrií. Naproti tomu retrográdní metoda nevyžaduje žádnou přídavnou paměť bez ohledu na počet kamenů.

Skládání (všemi postupy po &) je omezeno existencí příslušné zpětné generační procedury pro danou charakteristiku (lze použít jen pro charakteristiky 0,1,3,4,5(růže),8(mao a moa), tedy např.ne pro equihoppera nebo pro kameny pao,vao,leo). Jsou přípustné i válcové šachovnice (povolené charakteristiky jsou zde 0,1,3,5). Nejsou přípustné různé podmínky ani circe nebo madrasi.

14.1 Retrográdní postup

První metoda, kterou jsem vymyslel a nazval retrográdní postup, vychází ze zadaného matového nebo patového obrazce a umožňuje postupným vracením tahů vytvářet korektní pomocné nebo seriovotahové pomocné úlohy.

Takovéto úlohy je možné hledat až do maximálního počtu tahů s 1 řešením nebo vyjít ze dvou počátečních matových, resp. patových pozic (druhá se zadá pomocí $) a hledat úlohy s 2 řešeními. Dále je přitom možno využít parametr %, kterým je možno definovat výčtem možné obrazce (k urychlení řešení).

Pokud při retrográdním postupu použijeme režimy, kdy vzniká soubor OUT, obsahuje tento soubor řešení ve zpětném tvaru. Převod tohoto souboru na soubor pozic $.OUT je možný ze základní nabídky po volbě +. Zde je též možné vyloučit příp. identické pozice, které se liší pouze symetrií nebo otočením.

V případě použití jiných exokamenů než cvrčka [a s vyjímkou případu &(D) a &(R)], je třeba zadat &(...)R, aby se vytvořily masky exokamenů, pochopitelně, jen pokud jde o exokámen přípustný pro redukční algorimus.

Při skládání úloh s jedním řešením se obvykle používá h#n/&(x). Hodnota "n" je v případě skládání pomocí & v půltazích, např.pro pom.maty 4.tahem je tedy nutno zadat h#8/&(x). Pokud délku předem neznáme, volíme např. h#20/&(x) nebo sh#50/&(x) apod.

V případě skládání úloh s 2 řešeními není hodnota skladby v maximální délce, ale ve vztahu obou řešení. Zde proto nezadáváme zbytečně velké počty tahů (neúměrně by prodlužovalo generování), ale jen tolik, kolik potřebujeme, tedy např.h#10/&(x)$( ... ) vytváří maximálně pětitahové pomocné maty s 2 řešeními. Též je možné skládání úloh se 3 řešeními.

 

&(parametry)

skládání h#n a sh#n retrográdním postupem od matového obrazce

U neměnná úroveň

X výpisy úrovní

N bez výpisu řešení z úrovně n-1

0 bez řešení

S bez S algoritmu v řešení

R bez R algoritmu v řešení

(Pozor, v kombinaci s D mají parametry R,X,0,N jiný význam, viz dále)

$ má-li být v konečné pozici kámen z d6 na a3 a kámen z g3 na e1, dá se využít hlavně při skládání úloh k zadání druhého obrazce. $(d6a3,g3e1)

Je možno zadat (v kombinaci s &) i příp. třetí obrazec, oddělený lomítkem, např. $(d6a3,g3e1/d6a4,g3e2). Takto je možno skládat úlohy se 3 řešeními (retrográdním postupem).

B při použití & generuje zpětné tahy v opačném pořadí.

Příklady vzhledu obrazovky během skládání retrográdním postupem (orientační výpisy úrovní zvolené parametrem X se provádějí pouze na obrazovku a v souboru OUT se neobjeví):

Následující příklad obsahuje též definování nového kamene Z (zebry)

14.2 Zermelův algoritmus

Druhý skládací postup je založen na jiné metodě (tzv. Zermelově algoritmu, který se ve světě používá i k budování databází koncovek s 4-6 kameny). Tento algoritmus je použitelný jen na počítačích s aspoň 4 MB extended RAM. Dají se s ním vytvářet

A) sh#n nebo sh=n se 2 nebo 3 aktivními černými kameny (první podle pořadí v zadání, zadat více jak 3 černé kameny je však možné jen s citem, např.černý pěšec, který nemůže táhnout apod.). Počáteční pozice je (na rozdíl od retrográdního postupu) ne matová nebo patová, ale před posledním tahem bílého. Pomocí $ je možno zadat ještě příp. druhou počáteční pozici, a hledat úlohy s 2 řešeními. Program vytváří postupně všechny sh#0,sh#1,sh#2 atd., až do maxima, které je dáno nejdelší jednoznačnou úlohou.

B) h#n (h=n) se 4 aktivními kameny (tedy 1+3, 2+2, 3+1 a příp.i úlohy bez bílého krále, který se pak do aktivních kamenů nepočítá). Program používá 2.5MB v extended RAM a vytváří zde nekonstruktivní databázi pomocných matů (patů), přičemž úlohy jsou symetrizovány (jinak by bylo třeba 16MB), takže je možno skládat jen úlohy bez pěšců. Rozdíl proti sh#n (resp.sh=n) je dále v tom, že se zadává matová (resp.patová) pozice (ne tedy pozice před posledním tahem jako v sh). Je možno využít zadání dalších obrazců pomocí %([][]...) nebo hledání úloh se 2 řešeními se zadaným druhým obrazcem pomocí $(), přičemž lze ještě kombinovat i s %.

Nejmocnější je ovšem zadání h#n/&(du)|, kdy počáteční pozice může být libovolná (tedy ne nutně matová nebo patová, slouží jen k zadání typu materiálu) a program sám nalezne všechny možné obrazce (pozor, toto lze použít jen pro h#n, resp.h=n, nikoliv pro sh#n tam se používá metoda, popsaná v předcházejícím odstavci).

Výstupem je soubor pozic, s počtem tahů, ovšem nikoliv jejich řešení (proto nekonstruktivní databáze, kdy je možné o nějaké pozici prohlásit, že je to např.korektní h#45, ale jeho řešení neznáme [přímá konstruktivní databáze by vyžadovala ještě nesrovnatelně více paměti]). Nyní jsou 2 možnosti. Buď se úlohu pokusit vyřešit VKSACHem (s parametrem S1), to obvykle lze u úloh, kde je možno použít redukční algoritmus, u jiných to lze do 10.,max. 15.tahu. Výše uvedený h#45 takto vyřešit nejde. Musí se použít druhá možnost, úlohu znovu zkonstruovat s parametrem X, tj. &(DX)| a vyhradit si cca 2-12MB na disku [lze odhadnout podle výstupu s=..., pro 200000 pozic je to asi 6MB]. Toto generování na 486/66 netrvalo nikdy více než půl hodiny. Potom se na výstupní soubor1 typu OUT použije program DBOUT soubor1.out soubor2.out, který vygeneruje (už malý) soubor2, který může být vstupem VKSACHu např.pro přehrání řešení. Vše je to dost náročná záležitost a vyžaduje min.procesor 386, ale výsledky stojí za to (uvedený h#45 se 4 kameny byl skutečně složen: cvrčkový král d1/ tátošovocvrčkový král b3, tátošový cvrček f4, cvrček g8).

Při vytváření řešení programem DBOUT může dojít v důsledku symetrizace k tomu, že postup není jednoznačný a jsou možné 2 tahy. Tento případ je signalizován výpisem na obrazovku a je ho možno ošetřit voláním

DBOUT vstup vystup K

kde parametr K určuje, že bude provedena korekce řešení z klávesnice. Pak po výpisu obou možností zadáme buď "1" nebo "2", čímž určíme správnou  transformaci  šachovnice. V případě špatného zadání by mohlo řešení obsahovat nemožné tahy. Správnost postupu ověříme přehráním řešení pod VKSACHem (V). Zkušenosti ukazují, že tuto korekci je třeba provést cca v 10% případů úloh (symetrické tahy vzhledem k diagonále).

 

Řešení používající extended RAM je možné spustit též residentně a je možné i současné provozování interaktivního VKSACHu.

&(D) Využití extended RAM jako databáze. Zadá se koncová pozice (pokud použijeme automatické generování nultažek, nemusí být mat ani pat) a s pomocí Zermelova algoritmu se hledají korektní úlohy.

Parametry U,N,0,X, (příp.$) zde mají zvláštní význam a s vyjímkou X je lze vzájemně kombinovat.

&(DU) Při řešení se vypisuje na každé úrovni jen jedna korektní pozice, od zadané hladiny [např.sh#20/&(du)] pak všechny pozice.

&(D0) Uvažují se počáteční obrazce též s prohozením aktivních černych kamenů.

&(DN) Řešení (i výpisy) se provádí až do vyčerpání i nejednoznačných (nekorektních) pozic.

&(D)$(obrazec)

Kromě obrazce daného počáteční pozicí se uvažuje též obrazec zadaný pomocí $. Příp.parametr 0 je akceptován i pro tento obrazec. Navíc je možno zadat další obrazce též pomocí %.

&(DR)$(obrazec)

Je možno hledat úlohy s 2 řešeními v sh#n i v h#n.

Pro převod souboru OUT vzniklého po &(D) na INP soubor s pozicemi ve formátu VKSACHu se dá použít transformační program DBINP. Syntaxe je

DBINP vstup vystup [p]

Pokud je bez parametru, pak se z každé úrovně bere max. 8 prvních pozic. Generování probíhá od nejvyšší úrovně. Pokud je parametr p=1, berou se všechna řešení (na všech úrovních), při p=0, pak jen z poslední úrovně. Řešení je pak nejlépe vytvořit VKSACHem (program DBINP generuje ke každé pozici řetězec RS, který je případně možno vypustit editorem, příp.nahradit RS1 nebo S1).

&(DX) Tento parametr má význam výpisu úloh s následnou pozicí (a každá pozice je na novém řádku). Podle tohoto výpisu pak lze u dlouhých úloh (nevyřešitelných VKSACHem ani při S1) zkonstruovat přímo řešení nebo pozici, kterou již lze v únosném čase vyřešit (program DBOUT file1.out file2.out). Dále je lepší VKSACH spustit souborově nebo residentně (aby nezdržovalo rolování obrazovky při výpisu množství pozic) a je třeba počítat s 2-12 MB volného místa na disku.

| &(d)| má význam automatického generování nultažek (obrazců) pro 4 kamenovou (symetrizovanou) databázi. Dá se použít k hledání nejdelších úloh ne z daného obrazce, ale s daným materiálem. Jen je třeba volit takový materiál, aby nebyly možné i obrazce např. jen se 3 kameny.