import itertools import pandas as pd class Generate_data_set: def __init__(self, length=9): self.length = length self.list = [i for i in range(length)] self.board = [0 for i in range(length)] self.templist = [] self.list_f = [] self.list_s = [] self.list_d = [] def search(self): for i in range(4, self.length): print('{}!'.format(i+1)) for t in itertools.permutations(self.list, r=i+1): self.templist = list(t) for j in range(len(self.templist)): k = self.templist[j] if j % 2 == 0: self.board[k] = 1 else: self.board[k] = 2 if self.cheak_board(): if j == (len(self.templist)-1): self.temp_recording_fs(j % 2) else: break elif i+1 == 9 and j == (len(self.templist)-1): self.temp_recording_d() self.board[:] = [0 for i in range(self.length)] self.writing_files() def cheak_board(self): win_cond = ((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)) for each in win_cond: if self.board[each[0]] == self.board[each[1]] == self.board[each[2]]: if self.board[each[0]] != 0: return True return False def temp_recording_fs(self, turn): if turn == 0: self.list_f.append(self.templist) elif turn == 1: self.list_s.append(self.templist) def temp_recording_d(self): self.list_d.append(self.templist) def writing_files(self): df_f = pd.DataFrame(self.list_f) df_s = pd.DataFrame(self.list_s) df_d = pd.DataFrame(self.list_d) df_f.to_csv("dataset_f.csv", header=False, index=False, mode='w') df_s.to_csv("dataset_s.csv", header=False, index=False, mode='w') df_d.to_csv("dataset_d.csv", header=False, index=False, mode='w') if __name__ == '__main__': dataset = Generate_data_set() dataset.search()