Test 1
def alpha_beta_pruning(state, depth):
alpha = float("-inf")
beta = float("inf")
best_val = float("-inf")
best_move = None
# For all possible moves
for a in state.actions():
# Get the state after the action is taken
value = min_value(state.result(a), alpha, beta, depth-1)
# Update alpha
alpha = max(alpha, value)
# Check if we have a new max
if value > best_val:
best_val = value
best_move = a
return best_move