apraksts uzdevumi suutiit jauns statuss rezultati helps apraksts

desum Desu meistari 1 sek.


 Uzdevums

Divi spēlētāji spēlē parastās "DESAS" : uz 3*3 rūtiņu laukuma katrs pēc kārtas kādā no neaizņemtajām rūtiņām velk savu simbolu (viens simbolu X, otrs - O).
Spēli var sākt gan tas spēlētājs, kurš velk "X", gan tas kurš velk "O". Spēle beidzas ar kāda spēlētāja uzvaru, ja tam izdevies aizpildīt trīs vienā rindā esošas (horizontāli, vertikāli vai pa diagonāli) rūtiņas ar saviem simboliem. Ja aizpildīti visi deviņi lauciņi un nevienam no spēlētājiem nav izdevies uzvarēt, spēle beigusies neizšķirti.

Spēles lauka protokols ir 9 simbolu virkne, ko veido pierakstot pēc kārtas pa rindām katrā spēles lauciņā ierakstīto simbolu ("X" vai "O") vai arī "T", ja lauciņš ir tukšs. Spēles lauka i-tās rindas j-tās kolonnas lauciņa saturam atbilst protokola 3*(i-1)+j -tais simbols. Spēles sākuma pozīcijai atbilst protokols "TTTTTTTTT" (neviens lauciņš nav aizpildīts).
DESU spēles izspēli sauksim par pabeigtu, ja kāds no spēlētājiem ir uzvarējis, vai visi deviņi spēles lauciņi ir aizpildīti.
Divu dažādu DESU spēļu izspēles sauksim par vienādām, ja abas izspēles ir pabeigtas un abās spēlēs katrā gājienā viens un tas pats simbols ir ierakstīts vienā un tajā pašā lauciņā.
Divu dažādu DESU spēļu izspēles sauksim par dažādām, ja tās nav vienādas.
Teiksim, ka konkrētā spēle nospēlēta meistarīgi, ja šīs spēle ir pabeigta un tās laikā nav bijusi situācija, ka kāds no spēlētājiem ar savu gājienu ir varējis tūlīt pat uzvarēt, bet uzvarošā gājiena vietā ir izdarījis citu.
Piemēram, ja ir bijusi situācija ( protokols XOTTTOTTX ):
XO
O
X

un gājiens spēlētājam, kurš velk "X", tad spēle būs nospēlēta meistarīgi tikai tad, ja nākošais gājiens būs centrālajā rūtiņā ar uzvaru ( protokols XOTTXOTTX ):
XO
XO
X

Savukārt, ja gājiens būtu bijis spēlētājam, kurš velk "O", tad pagaidām jebkurš gājiens atbilstu meistarīgai spēlei.

Uzrakstiet programmu, kas ievadītai 9 simbolu virknei veiktu sekojošas darbības :

  1. noteiktu, vai tas ir desu spēles protokols, t.i., vai šajā virknē nav no lielajiem latīņu alfabēta burtiem "X","O" un "T" atšķirīgi simboli un vai šādu spēles situāciju ir iespējams iegūt, spēlējot pēc noteikumiem. Ja virkne ir desu protokols, pāriet uz 2. darbību, ja nē - izvaddatu failā izvadītu paziņojumu : "NAV KOREKTS DESU PROTOKOLS." un dotās virknes apstrādi pārtraukt.
  2. noteiktu, vai dotais protokols atbilst pabeigtai spēlei. Ja jā, pāriet uz 3. darbību, ja nē - izvaddatu failā izvadītu paziņojumu : "DESAS NAV PABEIGTAS." un dotās virknes apstrādi pārtraukt.
  3. noteiktu, cik dažādas meistarīgi izspēlētas spēles varēja beigties ar pozīciju, kas atbilst dotajam protokolam un izvaddatu failā izvadītu paziņojumu : "PROTOKOLAM ATBILST <skaits> MEISTARVARIANTI."

 
 Ievaddati

Teksta faila desum.in pirmajā rindā dota deviņu simbolu virkne.

 
 Izvaddati

Teksta faila desum.out vienīgajā rindā izvadītu uzdevuma noteikumos minēto paziņojumu.

 
 Piemērs

desum.indesum.out
XXOOTXTXO
DESAS NAV PABEIGTAS.
desum.indesum.out
XXXTTTOOO
NAV KOREKTS DESU PROTOKOLS.
desum.indesum.out
OXOXXTOXO
PROTOKOLAM ATBILST 16 MEISTARVARIANTI.

 
 Atsauces
Uzdevums izmantots Latvijas 9.informātikas olimpiādes III(Valsts) kārtā.
Autors:M.Opmanis

Drukāšanai

 

Copyright © 2001 Girts Folkmanis, LIIS