You are on page 1of 2

CODE:-

class Node:
def __init__(self, value=None):
self.value = value
self.children = []

def minimax(node, depth, is_maximizing):


if depth == 0 or not node.children:
return node.value if node.value is not None else 0

if is_maximizing:
max_eval = float('-inf')
for child in node.children:
eval_child = minimax(child, depth - 1, False)
max_eval = max(max_eval, eval_child)
return max_eval
else:
min_eval = float('inf')
for child in node.children:
eval_child = minimax(child, depth - 1, True)
min_eval = min(min_eval, eval_child)
return min_eval

root = Node()
root.children = [Node(), Node(), Node()]
root.children[0].children = [Node(), Node()]
root.children[1].children = [Node(), Node()]
root.children[2].children = [Node(), Node()]

root.children[0].children[0].value = 15
root.children[0].children[1].value = 8
root.children[1].children[0].value = 7
root.children[1].children[1].value = 6
root.children[2].children[0].value = 4
root.children[2].children[1].value = 3

minimax_value = minimax(root, 2, True)


print("Minimax value:", minimax_value)

OUTPUT:-

You might also like