Skip to content

Instantly share code, notes, and snippets.

@swapnil-warke
Created June 7, 2013 00:04
Show Gist options
  • Save swapnil-warke/5726094 to your computer and use it in GitHub Desktop.
Save swapnil-warke/5726094 to your computer and use it in GitHub Desktop.
/*
** id :template
** author : swap_coder
** time:
*/
#include<vector>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <cstdlib>
#include <stack>
using namespace std;
#define fi(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define fd(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define rep(i,n) for(int i=0;i<n;i++)
#define SET(a) memset(a,-1,sizeof(a))
#define ALL(a) a.begin(),a.end()
#define CLR(a) memset(a,0,sizeof(a))
#define FILL(a,v) memset(a,v,sizeof(a))
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define INF (1<<29)
#define EPS 1e-9
#define PI acos(-1.0)
//stl
#define sz(a) int((a).size())
#define pb push_back
#define all(c) ((c).begin(),(c).end())
#define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define pf printf
#define sf scanf
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;
typedef map<string,int> msi;
int main()
{
int t;
cin>>t;
while(t--)
{
getchar();
char l1[5],l2[5],l3[5];
cin>>l1>>l2>>l3;
int countx=0,counto=0;
rep(i,3)
{
countx= l1[i]=='X' ? countx+1 :countx;
countx= l2[i]=='X' ? countx+1 :countx;
countx= l3[i]=='X' ? countx+1 :countx;
counto= l1[i]=='O' ? counto+1 :counto;
counto= l2[i]=='O' ? counto+1 :counto;
counto= l3[i]=='O' ? counto+1 :counto;
}
bool flag=true;
if(countx - counto !=1 && counto - countx !=0)
flag=false;
int wino=0,winx=0;
//HORIZONTAL
if(l1[0]=='X' && l1[1]=='X' &&l1[2]=='X')
winx++;
if(l1[0]=='O' && l1[1]=='O' &&l1[2]=='O')
wino++;
if(l2[0]=='X' && l2[1]=='X' &&l2[2]=='X')
winx++;
if(l2[0]=='O' && l2[1]=='O' &&l2[2]=='O')
wino++;
if(l3[0]=='X' && l3[1]=='X' &&l3[2]=='X')
winx++;
if(l3[0]=='O' && l3[1]=='O' &&l3[2]=='O')
wino++;
//VERTICAL
if(l1[0]=='X' && l2[0]=='X' &&l3[0]=='X')
winx++;
if(l1[0]=='O' && l2[0]=='O' &&l3[0]=='O')
wino++;
if(l1[1]=='X' && l2[1]=='X' &&l3[1]=='X')
winx++;
if(l1[1]=='O' && l2[1]=='O' &&l3[1]=='O')
wino++;
if(l1[2]=='X' && l2[2]=='X' &&l3[2]=='X')
winx++;
if(l1[2]=='O' && l2[2]=='O' &&l3[2]=='O')
wino++;
//DIGONAL
if(l1[0]=='X' && l2[1]=='X' &&l3[2]=='X')
winx++;
if(l1[0]=='O' && l2[1]=='O' &&l3[2]=='O')
wino++;
if(l1[2]=='X' && l2[1]=='X' &&l3[0]=='X')
winx++;
if(l1[2]=='O' && l2[1]=='O' &&l3[0]=='O')
wino++;
if(winx && wino) flag=false;
// if(winx>1 || wino>1) flag=false;
if((winx && countx-counto!=1)|| (wino && countx-counto!=0)) flag=false;
if(flag)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment