Я писал такую программу, как крестики-нолики.
Explaination
Я хотел создать функцию, которая бы принимала входные данные в виде двумерного списка длиной n x m , где n может равняться или не равняться m.
Он должен проверить, есть ли в списке 2D 4 или более последовательных X или 4 последовательных O .
Он должен возвращать «X», если в списке есть четыре смежных значения «X» ( строка, столбец, диагональ ). Он должен возвращать «O», если есть четыре соседних «O» значения в любом месте списка (строка, столбец,
диагональ). Он должен возвращать None, если ни 'X', ни 'O' не удовлетворяют вышеуказанному условию. Вы можете предположить, что может быть только один ответ.
Если я дам следующий , введите :
xwins = [[None, None, None, None, None, None, None],
[None, None, None, None, None, None, None],
[None, None, None, None, "X" , None, None],
[None, None, None, "X" , "O" , "O", None],
[None, "O" , "X" , "X" , "O" , "X", None],
["O" , "X" , "O" , "O" , "O" , "X" , "X"]]
owins = [[None, None, None, None, None, None, None],
[None, None, None, None, None, None, None],
["O" , "O" , "O" , "O" , None, None, None],
["O" , "X" , "X" , "X" , None, None, None],
["X" , "X" , "X" , "O" , "X" , None, None],
["X" , "O" , "O" , "X" , "O" , None, None]]
nowins =[["X" , "X" , None, None, None, None, None],
["O" , "O" , None, None, None, None, None],
["O" , "X" , "O" , "O" , None, "O" , "O" ],
["O" , "X" , "X" , "X" , None, "X" , "X" ],
["X" , "X" , "X" , "O" , "X" , "X" , "O" ],
["X" , "O" , "O" , "X" , "O" , "X" , "O" ]]
print(myfunc(xwins))
print(myfunc(owins))
print(myfunc(nowins))
Это должно дать результат :
X
O
None
Мой Прогресс :
Я нашел способ проверить каждую строку, используя код:
def myfunc(lol):
for i in lol:#lol is list of list :)
string="".join(i)
if ("XXXX" in string):
return "X"
elif ("OOOO" in string):
return "O"
Я пытаюсь обойтись без NumPy.
Помощь будет оценена. Извините, если я оставил что-то неясным. Пожалуйста, спросите меня в комментариях. :)