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 Python (judge verdict: Accepted)

import sys,itertools
ans = ['xxx      ','   xxx   ','      xxx','x  x  x  ',' x  x  x ','  x  x  x','x   x   x','  x x x  ']
for s in sys.stdin:
	s = s.strip()
	o = [True if c == 'o' else False for c in s]
	x = [True if c == 'x' else False for c in s]
	o = list(itertools.repeat(0,len(ans)))
	x = list(itertools.repeat(0,len(ans)))
	out = 'd'
	for i,j in itertools.product(xrange(len(ans)),xrange(len(ans[0]))):
		if ans[i][j] == 'x':
			if s[j] == 'o':
				o[i] = o[i] + 1
			if s[j] == 'x':
				x[i] = x[i] + 1
	if 3 in o:
		print 'o'
	elif 3 in x:
		print 'x'
	else:
		print 'd'