Laiko ribojimas: 1s
Atminties ribojimas: 16MB
Duomenų failas: kryziukai2.in
Rezultatų failas: kryziukai2.out
Kryžiukai-nuliukai II
Parašykite programą, kuri žaistų kryžiukų-nuliukų žaidimą WxH dydžio lentoje ().
Protokolas
Programa turi skaityti duomenis iš standartinio įvesties įrenginio ir rašyti į standartinį išvesties įrengtinį (jokių failų). Programa turi:
- perskaityti eilutę su trimis tarpais atskirtais skaičiais W, H ir K. W yra lentelės plotis, H - lentelės ilgis ("aukštis"), o K - parametras, kiek simbolių reikia padėti iš eilės (eilutėje, stulpelyje ar įstrižai), kad laimėti;
- perskaityti vieną eilutę su vienu simboliu: "x" arba "o". Tai žaidėjo (ne kompiuterio) pasirinkimas, ar žaisti kryžiukais, ar nuliukais. Jei įvedama "x", tai žaidėjas pradeda žaidimą, priešingu atveju - kompiuteris;
- esant žaidėjo ėjimui, programa turi perskaityti eilutę su dviem skaičiais x ir y, atskirtais tarpo simboliu. x yra stulpelio, o y - eilutės, kur žaidėjas nori padėti savo simbolį, numeriai;
- esant kompiuterio ėjimui, programa turi išspausdinti savo ėjimą tokiu pačiu formatu: viena eilute su dviem tarpo simboliu atskirtais skaičiais;
- žaidėjui arba kompiuteriui laimėjus žaidimą, arba lentelėje nelikus nei vieno laisvo langelio, programa turi baigti darbą.
Veikimo pavyzdys (rodyklės vaizduoja, ar duomenys įvedami, ar išvedami):
--> 3 3 3 --> o <-- 3 3 --> 2 2 <-- 3 2 --> 2 1 <-- 3 1 |
Šiame pavyzdyje žaidiama standartinėmis kryžiukų-nuliukų taisyklėmis (3 3 3). Kompiuteris žaidžia kryžiukais, pradeda žaidimą, ir laimi, sudėdamas tris kryžiukus trečiajame lentelės stulpelyje.
Vizualizacija
Savo programą galite vizualizuoti šia programa. Todėl svarbu, kad jūsų programa griežtai laikytųsi aprašyto protokolo.
Be to:
-
Po kiekvieno išvedimo veiksmo į standartinį išvedimo įrenginį, atlikite:
Flush(Output)
(Paskaliu), arba
fflush(stdout)
(C), arba
cout.flush()
(C++). -
Jei testavimo tikslais į ekraną norite išvesti kitos papildomos informacijos, darykite tai tokiu būdu:
Writeln(StdErr, 'Tai, ką norite išvesti.')
(Paskaliu), arba
fprintf(stderr, "Tai, ką norite išvesti.\n")
(C), arba
cerr << "Tai, ką norite išvesti." << endl
(C++).
Vizualizacijos programa parašyta Java platformai ir turėtų veikti bet kokioje OS. Jei programos Windows jums nepaleidžia, o siūlo kitokius (keistus) veiksmus, šalia sukurkite .bat
failą su tekstu java -jar kryziukai-gui.jar
ir paleiskite jį.
Pavyzdys
program notverysmart; |
Kaip pateikti šio uždavinio sprendimą
As saziningai issprendziau si uzdavini. |
Kieno programa geresnė?
Galite leisti jūsų programoms sužaisti tarpusavyje, paleidę dvi vizualizacijos programas ir atkartodami programų daromus ėjimus.