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.util.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;

public class Main {

	int INF = 1 << 28;
	
	void run() {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String s = sc.next();
			char ans = 'd';
			for(int i=0;i<3;i++) {
				if(s.charAt(3*i) != 'd' && s.charAt(3*i) == s.charAt(3*i+1) && 
				   s.charAt(3*i) == s.charAt(3*i+2)) ans = s.charAt(3*i);
				if(s.charAt(i) != 'd' && s.charAt(i) == s.charAt(3+i) &&
				   s.charAt(i) == s.charAt(6+i)) ans = s.charAt(i);
			}
			if(s.charAt(0) != 'd' && s.charAt(0) == s.charAt(4) && 
			   s.charAt(0) == s.charAt(8)) ans = s.charAt(0);
			if(s.charAt(2) != 'd' && s.charAt(2) == s.charAt(4) &&
			   s.charAt(6) == s.charAt(2)) ans = s.charAt(2);
			System.out.println(ans);
		}
	}

	public static void main(String[] args) {
		new Main().run();
	}

	void debug(Object... os) {
		System.err.println(Arrays.deepToString(os));
	}
}