is there a way to optimize my checking system? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: is there a way to optimize my checking system? (/thread-21742.html) |
is there a way to optimize my checking system? - GalaxyCoyote - Oct-12-2019 I am coding tic tac toe with lists (not 2d lists, this project was suggested by my teacher) and I want to go above and beyond, so I want to optimize my program as much as possible. Right now, the part of the program that sticks out like a sore thumb, the checker. Here is the code def check(): #will check if Player One/Two has won R1CX = Row1.count("X") #side check R2CX = Row2.count("X") R3CX = Row3.count("X") R1CO = Row1.count("O") R2CO = Row2.count("O") R3CO = Row3.count("O") if R1CX == 3 or R2CX == 3 or R3CX == 3: print("X Wins!") if R1CO == 3 or R2CO == 3 or R3CO == 3: print("O Wins!") if Row1[2] == "X" and Row2[1] == "X" and Row3[0] == "X": #dia check print("X Wins!") if Row1[0] == "X" and Row2[1] == "X" and Row3[2] == "X": print("X Wins!") if Row1[2] == "O" and Row2[1] == "O" and Row3[0] == "O": print("O Wins!") if Row1[0] == "O" and Row2[1] == "O" and Row3[2] == "O": print("O Wins!") if Row1[0] == "X" and Row2[0] == "X" and Row3[0] == "X": #upanddown check print("X Wins!") if Row1[1] == "X" and Row2[1] == "X" and Row3[1] == "X": print("X Wins!") if Row1[2] == "X" and Row2[2] == "X" and Row3[2] == "X": print("X Wins!") if Row1[0] == "O" and Row2[0] == "O" and Row3[0] == "O": print("O Wins!!") if Row1[1] == "O" and Row2[1] == "O" and Row3[1] == "O": print("O Wins!") if Row1[2] == "O" and Row2[2] == "O" and Row3[2] == "O": print("O Wins!")By using count I saved myself a few lines but I don't think there is any way to check across lists (again, I have to use regular lists) If anyone can point me in the right direction, that would be great! Thanks in advance. RE: is there a way to optimize my checking system? - ichabod801 - Oct-12-2019 What do you mean by regular lists? RE: is there a way to optimize my checking system? - GalaxyCoyote - Oct-12-2019 (Oct-12-2019, 01:43 PM)ichabod801 Wrote: What do you mean by regular lists? I mean not a list of lists e.g. a = [items] b = [items] c = [items] RE: is there a way to optimize my checking system? - ichabod801 - Oct-12-2019 Are you required to use global variables, too? RE: is there a way to optimize my checking system? - perfringo - Oct-13-2019 For checking the winner sets might be useful. Just general idea: >>> first = 'xoo' >>> second = 'xxx' >>> third = 'oox' >>> [row[0] for row in [first, second, third] if len(set(row)) == 1] # for rows ['x'] >>> set([row[i] for i, row in enumerate([first, second, third])]) # for main diagonal {'x'} |