Reaching Ground Floor in Python

Problem Statement:

You are on the top floor of a mall and you want to go out of the building. You’re car is in the parking area on the ground floor. But there’s some issue with the lift hence, it’s not working. Now you are left with stairs.

You are a programmer and you have to code the quickest route possible.
You have a floor map consisting of the 2D matrix.
Your position over the topmost floor is represented by the number 3.
– On each floor, there is at least a staircase represented by the number 1.
– All the walkable space is represented by the number 0.
– Ground floor place will have all 0’s.
Find the quickest path from your position on the top floor to the rightmost place on the ground floor.

Example:
Input1:
Enter Dimensions R and C: 4 4
Enter contents:
0 0 3 0
1 0 0 1
0 1 1 0
0 0 0 0
Output1:
The quickest path is: R1 C3->R2 C4->R3 C3->R4 C4

Input2:
Enter Dimensions R and C: 3 3
Enter contents:
3 0 0
1 1 1
0 0 0
Output2:
The quickest path is: R1 C1->R2 C1->R3 C3

Code Reaching Ground Floor in Python:

'''calculate nearest stair'''
def nearest_distance(row,pos):
    #compare distance to left stair and distance to right stair
    left = -1
    right = -1
    for i in range(pos,-1,-1):
        if(row[i]==1):
            left=i
            break
    for i in range(pos,len(row)):
        if(row[i]==1):
            right=i
            break
    if(right==-1):
        return left
    elif(left==-1):
        return right
    elif((pos-left)<(right-pos)):
        return left
    else:
        return right

'''find the fastest route'''
def route(matrix,rows,cols):
    path = list()
    rows = len(matrix)

    pos = matrix[0].index(3)
    path.append(f'R1 C{pos+1}')
    num=2
    nex=pos
    
    for i in range(1,rows-1):
        nex = nearest_distance(matrix[i],nex)
        
        path.append(f'R{num} C{nex+1}')
        num +=1
    
    
    path.append(f'R{rows} C{cols}')

    return "->".join(path)


'''input'''
r,c = map(int,input("Enter Dimensions R and C: ").split(" "))

matrix = list()

print("Enter contents: ")

for i in range(r):
    row = list(map(int,input().split()))
    matrix.append(row)

'''output'''
print("The quickest path is: ", route(matrix,r,c))

Input and Output 1:

Input and Output 1 for Reaching Ground Floor in Python

Input and Output 2:

Input and Output 2 for Reaching Ground Floor in Python

Also Read:

Share:

Author: Harry

Hello friends, thanks for visiting my website. I am a Python programmer. I, with some other members, write blogs on this website based on Python and Programming. We are still in the growing phase that's why the website design is not so good and there are many other things that need to be corrected in this website but I hope all these things will happen someday. But, till then we will not stop ourselves from uploading more amazing articles. If you want to join us or have any queries, you can mail me at admin@copyassignment.com Thank you