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.*;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) throws java.io.IOException {
        // TODO 自動生成されたメソッド・スタブ
        Scanner sc = new Scanner(System.in);
        char bor[][] = new char[3][3];

        while (sc.hasNext()) {
            char[] tmps = sc.nextLine().toCharArray();
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    bor[i][j] = tmps[i * 3 + j];
                }
            }

            char ans = 'u';
            for (int i = 0; i < 3; i++) {
                if (bor[i][0] == bor[i][1] && bor[i][0] == bor[i][2]) {
                    if (bor[i][0] == 'o') {
                        ans = 'o';
                        break;
                    } else if (bor[i][0] == 'x') {
                        ans = 'x';
                        break;
                    } else
                        continue;
                }
            }
            if (ans != 'u') {
                System.out.println(ans);
                continue;
            }

            for (int i = 0; i < 3; i++) {
                if (bor[0][i] == bor[1][i] && bor[0][i] == bor[2][i]) {
                    if (bor[0][i] == 'o') {
                        ans = 'o';
                        break;
                    } else if (bor[0][i] == 'x') {
                        ans = 'x';
                        break;
                    } else
                        continue;
                }
            }
            if (ans != 'u') {
                System.out.println(ans);
                continue;
            }
            if (bor[0][0] == bor[1][1] && bor[0][0] == bor[2][2]) {
                char j = bor[0][0];
                if (j == 'o')
                    ans = 'o';
                else if (j == 'x')
                    ans = 'x';
            }

            if (ans != 'u') {
                System.out.println(ans);
                continue;
            }

            if (bor[0][2] == bor[1][1] && bor[0][2] == bor[2][0]) {
                char j = bor[1][1];
                if (j == 'o')
                    ans = 'o';
                else if (j == 'x')
                    ans = 'x';
            }

            if (ans != 'u') {
                System.out.println(ans);
            } else
                System.out.println("d");

        }
    }
}