Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: cp1251 -*-
- '''
- Крестики и Нолики - это игра для двух игроков (Х и О),
- которые расставляют эти знаки на 3х3 поле. Игрок, который
- сумел разместить три своих знака в любой горизонтали,
- вертикали или диагонали -- выигрывает.
- Но сейчас мы не будем играть в эту игру. Вы будете судить игру,
- и оценивать результат. Вам дан результат игры, и вы должны решить,
- кто победил или что это ничья. Ваша функция должна вернуть "X" если
- победил Х-игрок и "О" если победил О-игрок. В случае ничьи, результат
- должен быть "D".
- Результаты игры представлены, как список (list) строк, где "X" и "O" - это
- отметки игроков и "." - это пустая клетка.
- Вх. данные: Результат игры, как список (list) строк (str, unicode).
- Вых. данные: "X", "O" или "D", как строка (str).
- Предусловия:
- В играх может быть только один победитель или ничья.
- len(game_result) == 3
- all(len(row) == 3 for row in game_result)
- Для выполнения этой конструкции число строк == числу столбцов.Пример:(3х3)
- print [game_result[i][i] for i in reversed(range(len(game_result)))]
- '''
- def checkio(game_result):
- slash_left = [game_result[i][i] for i in (range(len(game_result)))] # проверка по диагонали
- slash_left = ''.join(slash_left)
- print 'slash_left', slash_left
- print (game_result[1][1])
- slash_right = game_result[0][2]+game_result[1][1]+game_result[2][0] # проверка по диагонали
- slash_right = ''.join(slash_right)
- print 'slash_right', slash_right
- horiz_first = game_result[0] # проверка по горизонтали
- print 'horiz_first', horiz_first
- horiz_second = game_result[1]
- print 'horiz_second', horiz_second
- horiz_third = game_result[2]
- print 'horiz_third', horiz_third
- vert_first = [row[0] for row in game_result] # проверка по вертикали
- vert_first = ''.join(vert_first)
- print 'vert_first', vert_first
- vert_second = [row[1] for row in game_result]
- vert_second = ''.join(vert_second)
- print 'vert_second', vert_second
- vert_third = [row[2] for row in game_result]
- vert_third = ''.join(vert_third)
- print 'vert_third', vert_third
- game = [slash_left, slash_right, horiz_first, horiz_second, horiz_third, vert_first, vert_second, vert_third]
- print game
- if game:
- for z in game:
- if z == 'XXX':
- return 'X'
- break
- if z == 'OOO':
- return 'O'
- break
- return 'D'
- #return "D" or "X" or "O"
- checkio([
- u"OXX",
- u"XXO",
- u"OXX"])
- def checkio(game_result):
-
- patterns = [] + game_result
- size = len(game_result)
-
- for col in range(size):
- patterns.append(''.join([game_result[row][col] for row in range(size)]))
-
- patterns.append(''.join([game_result[x][x] for x in range(size)]))
- patterns.append(''.join([game_result[x][size - x - 1] for x in range(size)]))
-
- return 'X' if 'XXX' in patterns else 'O' if 'OOO' in patterns else 'D'
- #speedy
- def checkio(l, m = ''.join):
- c = lambda s: [x[0] for x in s if len(set(x)) == 1 and x[0] != '.'] or 'D'
- return m(c(l+map(None, *l)+[m(l)[::4],m(l)[2:-1:2]]))[0]
-
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement