Snakes and Ladders: The Quickest Way Up

  • + 0 comments

    from collections import deque def quickestWayUp(ladders, snakes):

    graph = {}
    for x, y in (ladders + snakes):
        graph[x] = y
    visited = [False]*(101) 
    q = deque([(1, 0)])
    visited[1] = True 
    while q:
        node, roll = q.popleft()
        if node == 100:
            return roll   
        visited[node] = True
        for i in range(1, 7):
            nodeNext = node + i
            if  nodeNext <= 100 and visited[nodeNext] == False:
                if nodeNext in graph:
                    q.append(( graph[nodeNext], roll + 1 ))
                else:
                    q.append(( nodeNext, roll + 1 ))
    return -1