PythonでXs and Os Referee

f:id:g_YUYUYU:20140428032251j:plain

コード

def checkio(game_result):
    magic_square = [8,1,6,3,5,7,4,9,2]

    x = [0,0,0,0,0,0,0,0,0]
    o = [0,0,0,0,0,0,0,0,0]

    s = "".join(game_result)

    for i in magic_square:
        if s[magic_square.index(i)] == "X":
            x[magic_square.index(i)] = i
        elif s[magic_square.index(i)] == "O":
            o[magic_square.index(i)] = i

    for i in [[8,1,6],[3,5,7],[4,9,2],[8,3,4],[1,5,9],[6,7,2],[8,5,2],[6,5,4]]:
        if set(x).issuperset(i):
            print "X"
            return 1
        elif set(o).issuperset(i):
            print "O"
            return 1
    else:
        print "D"
if __name__ == '__main__':
    checkio([u"X.O",u"XX.",u"XOO"])

一言

  • 気持よく解けた。パッと見魔法陣が使えないかと考えを深めて解けた。うまくfor文を使えたと思うし、setも共通項を割り出すためにうまく使えた。