ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1195. Крестики-нолики

WA #9
Послано -=UDS=- : Gladyrev, Savinkov, Bannikov (170 sch) 16 фев 2007 22:33
I checked all tests from webboard and my own tests - no any errors...

It's my code:

program krestiki;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var  a,b,c:integer;
s:array[1..8] of string;
cr,ou,be,dop,nul:boolean;
ouc:integer;
begin

ReadLn (s[1]);
ReadLn (s[2]);
ReadLn (s[3]);

//Creation of game lines
s[4]:=s[1][1]+s[2][1]+s[3][1];
s[5]:=s[1][2]+s[2][2]+s[3][2];
s[6]:=s[1][3]+s[2][3]+s[3][3];
s[7]:=s[1][1]+s[2][2]+s[3][3];
s[8]:=s[1][3]+s[2][2]+s[3][1];


//Check for winning ouths or crosses in first two moves
for a:=1 to 8 do
begin
if (pos('XX#',s[a])<>0) or (pos('X#X',s[a])<>0) or (pos('#XX',s[a])<>0) or (pos('XXX',s[a])<>0) then
cr:=true else
if (pos('OO#',s[a])<>0) or (pos('O#O',s[a])<>0) or (pos('#OO',s[a])<>0) or (pos('OOO',s[a])<>0)  then
begin

//Check for two winning lines for ouths
if nul=true then
ou:=true;
nul:=true;
end;
end;

nul:=false;

//Check for every second move by crosses
if (cr=false) and (ou=false) then

for c:=1 to 3 do
for b:=1 to 3 do
if s[c][b]='#' then
begin
s[c][b]:='X'; be:=true;
s[4]:=s[1][1]+s[2][1]+s[3][1];
s[5]:=s[1][2]+s[2][2]+s[3][2];
s[6]:=s[1][3]+s[2][3]+s[3][3];
s[7]:=s[1][1]+s[2][2]+s[3][3];
s[8]:=s[1][3]+s[2][2]+s[3][1];
for a:=1 to 8 do
begin
if (pos('XX#',s[a])<>0) or (pos('X#X',s[a])<>0) or (pos('#XX',s[a])<>0) or (pos('XXX',s[a])<>0) then
begin

//Check for two winning lines for crosses
if nul=true then
cr:=true;
nul:=true;
end;

if be=true then
s[c][b]:='#';

be:=false;
end;
end;

if cr=true the WriteLn ('Crosses win') else
if ou=true then WriteLn ('Ouths win') else
WriteLn ('Draw');
ReadLn;
end.