laud=['0', '.', '0', 'X', 'X', '.', '0', '.', 'X'] voidukolmikud=[ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6] ] def kasSama(kolmik, mangija): return laud[kolmik[0]]==mangija and \ laud[kolmik[1]]==mangija and \ laud[kolmik[2]]==mangija def kasVoit(mangija): for kolmik in voidukolmikud: if kasSama(kolmik, mangija): return True return False def kasViik(): #Kas laud on täis? #tagastab True kui laud on täis, muidu False #Kui leidub vähemasti üks punkt, siis ei ole täis if '.' in laud: return False return True def k2igud(kes): for nr in range(9): if laud[nr]=='.': yield nr def seisuHinnang(kes, sygavus=0): #tagastab 1, 0, -1 või ? #X võidu, viigi, 0 võidu ja teadmata seisu puhul if kasVoit('X'): return 1 if kasVoit('0'): return -1 if kasViik(): return 0 hinnangud=[] vastane='0' if kes=='X' else 'X' if sygavus<2: for kaik in k2igud(kes): laud[kaik]=kes print(sygavus*' ', laud) hinnangud.append(seisuHinnang(vastane, sygavus+1)) print(sygavus*' ', hinnangud[-1]) laud[kaik]="." if (kes=='X'): if (1 in hinnangud): return 1 koikmiinusyhed=True for hinnang in hinnangud: if not hinnang==-1: koikmiinusyhed=False if koikmiinusyhed: return -1 if (kes=='0') and (-1 in hinnangud): return -1 return '?' #Kui kes==X, kuva suurim, muidu vähim hinnang def kontroll(): vastus=seisuHinnang('X') if vastus==1: print('X võidab ühe käiguga') if vastus==-1: print('X kaotab') print("vastus oli ", vastus) #Lisaks eelmisele tunne ära olukord, kus alustav X paratamatult #kaotab järgmisel käigul print(laud) print(kontroll())