Autorské riešenie
[stiahni]

Samotné riešenie tejto úlohy je veľmi jednoduché. Aby sme ho však objavili, musíme trochu porozmýšľať.

Pozrime sa najskôr na dvojicu čistiarní, čistiareň 1 a čistiareň 2. Aby bola táto časť systému priechodná, musia byť priechodné obidve čistiarne súčasne. Obsah premennej "c1 musí byť áno a zároveň aj obsah premennej :c2 musí byť tiež áno. Túto podmienku zapíšeme takto:

zaroven :c1 :c2

Čistiarne 3 a 4 pracujú nezávisle. Aby bola táto časť systému priechodná, musí byť priechodná aspoň jedna z nich. Stačí teda, aby obsah aspoň jednej z premenných "c3 alebo "c4 bol áno. Túto podmienku zapíšeme takto:

alebo :c3 :c4

Aby bol priechodný celý systém, musí byť priechodná aspoň jedna z týchto dvoch častí. Časť systému z čistiarní 1 a 2 alebo časť systému z čistiarní 3 a 4. Túto podmienku zapíšeme takto:

alebo zaroven :c1 :c2 alebo :c3 :c4

Celý systém však funguje podľa toho, aká je hodnota premennej "volno. Výsledok vyššie uvedenej podmienky, ktorý je buď áno alebo nie, preto stačí uložiť do tejto premennej. Výsledná procedúra môže vyzerať aj takto:

viem vyhodnot
  urob "volno alebo zaroven :c1 :c2 alebo :c3 :c4
koniec

Na celý systém sa však môžeme pozrieť trochu inak. Ide v podstate o tri, navzájom nezávislé časti:

  • dvojica čistiarní: čistiareň 1 a čistiareň 2,

  • čistiareň 3,

  • čistiareň 4.

Aby bol celý systém priepustný, musí byť priepustná aspoň jedna z týchto troch častí. Výsledná procedúra preto môže vyzerať aj takto:

viem vyhodnot
  urob "volno (alebo zaroven :c1 :c2 :c3 :c4)
koniec

Všimnime si ešte jednu zaujímavú vec. V našich podmienkach nemusíme porovnávať, či hodnota premennej je "áno alebo "nie takto: ak ("c1 = "áno) [...]. Vyhodnotením takéhoto výrazu je hodnota "áno, ak hodnota premennej "c1 je "áno. Ak je hodnota premennej "c1 "nie, výsledkom je tiež hodnota "nie. Výraz "c1 = "áno má teda rovnakú hodnotu ako premenná "c1.

Vaše zaujímavé riešenia a najčastejšie chyby

Úlohu riešilo 27 tímov, väčšina správne alebo správne ale nie veľmi efektívne.

  • V riešení tejto úlohy ste príkaz AK nemuseli používať.

  • Častou chybou bolo zbytočné testovanie ciest systému. Ak ste už našli jednu cestu priepustnú, ďalšie nie je potrebné testovať.