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: Accepted)

import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		label:while(cin.hasNext()){
			String str = cin.next();
			str = str.replace('o', '1');
			str = str.replace('x', '9');
			str = str.replace('s', '0');
			
			int[][] a = new int[3][3];
			String[] s = new String[3];
			s[0]=str.substring(0, 3);
			s[1]=str.substring(3, 6);
			s[2]=str.substring(6, 9);
			for(int i = 0; i < 3;i++){
				for(int j = 0; j < 3;j++){
					a[i][j] = Integer.parseInt(s[i].substring(j, j+1));
				}
			}
			for(int i = 0; i < 3;i++){
				if(a[i][0]+a[i][1]+a[i][2] == 3){
					System.out.println("o");
					continue label;
				}
				else if(a[i][0]+a[i][1]+a[i][2] == 27){
					System.out.println("x");
					continue label;
				}
			}
			for(int i = 0; i < 3;i++){
				if(a[0][i]+a[1][i]+a[2][i] == 3){
					System.out.println("o");
					continue label;
				}
				else if(a[0][i]+a[1][i]+a[2][i] == 27){
					System.out.println("x");
					continue label;
				}
			}
			if(a[0][0]+a[1][1]+a[2][2]==3){
				System.out.println("o");
				continue;
			}
			else if(a[0][0]+a[1][1]+a[2][2]==27){
				System.out.println("x");
				continue;
			}
			if(a[2][0]+a[1][1]+a[0][2]==3){
				System.out.println("o");
				continue;
			}
			else if(a[2][0]+a[1][1]+a[0][2]==27){
				System.out.println("x");
				continue;
			}
			System.out.println("d");
		}
	}

}