IFI6057minimax
Allikas: Lambda
X=1 O=-1 def actions(state): for i in range(9): if state[i] is None: yield i def result(a, state): newstate = state.copy() tomove = state[9] newstate[a] = tomove newstate[9] = -tomove return newstate def successors(state): for a in actions(state): s = result(a, state) yield (a, s) def terminal_test(state): acts = list(actions(state)) if not acts: return True value = utility(state) if value != 0: return True return False def utility(state): triples = [(0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (6, 4, 2)] for a, b, c in triples: if state[a] is None: continue if (state[a] == state[b] and state[b] == state[c]): if state[a] == MYSIDE: return 1 else: return -1 return 0 algus = [ X, O, X, O, None, O, None, None, None, X] MYSIDE = X #print(minimax_decision(algus))