Problem:
三目並べ

三目並べは，３ × ３のマス目の中に交互に ○ と × を入れていき、縦・横・斜めの何れかに一列 ○ か × が並んだときに、勝ちとなるゲームです（図1〜図3 を参照）

図１：○の勝ち

図２：× の勝ち

図３：引き分け

三目並べは、○と×が交互にマス目を埋めていき、どちらかが一列揃ったときにゲーム終了となります。そのため、図 4 のように、○と×が両方とも一列そろっている場合はありえない局面です。ありえない局面が入力されることはありません。

図４：ありえない局面

三目並べの盤面を読み込んで、勝敗の結果を出力するプログラムを作成して下さい。

Input

入力は複数のデータセットからなります。各データセットとして、盤面を表す１つの文字列が１行に与えられます。
盤面の文字列は、○、×、空白をそれぞれ半角英小文字の o、x、s であらわし、下図のマス目の順に並んでいます。

データセットの数は 50 を超えません。

Output

データセットごとに、○が勝ちなら半角英小文字の o を、×が勝ちなら半角英小文字の x を、引き分けならば半角英小文字の d を１行に出力してください。

Sample Input

ooosxssxs
xoosxsosx
ooxxxooxo

Output for the Sample Input

o
x
d

Solution in JAVA (judge verdict: Wrong Answer)

import java.io.*;
 
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line="";
line=br.readLine();
int d=line.length()/3;
char[][][] map=new char[d][3][3];
for(int i=0;i<line.length();i++){
map[(int)(i/3)][0][i%3]=line.charAt(i);
}
for(int j=1;j<=2;j++){
line=br.readLine();
for(int i=0;i<line.length();i++){
map[(int)(i/3)][j][i%3]=line.charAt(i);
}
}
outside:
for(int i=0;i<d;i++){
for(int j=0;j<3;j++){
if(map[i][j][0]!='s'&&map[i][j][0]==map[i][j][1]&&map[i][j][1]==map[i][j][2]){
System.out.println(String.valueOf(map[i][j][0]));
continue outside;
}
if(map[i][0][j]!='s'&&map[i][0][j]==map[i][1][j]&&map[i][1][j]==map[i][2][j]){
System.out.println(String.valueOf(map[i][0][j]));
continue outside;
}
}
if(map[i][1][1]!='s'&&map[i][0][0]==map[i][1][1]&&map[i][1][1]==map[i][2][2]){
System.out.println(String.valueOf(map[i][1][1]));
continue outside;
}
if(map[i][1][1]!='s'&&map[i][0][2]==map[i][1][1]&&map[i][1][1]==map[i][2][0]){
System.out.println(String.valueOf(map[i][1][1]));
continue outside;
}
System.out.println("d");
}
}
}