Home Blog Coding Problem Practice

Find The Cost (Nested Approch)

Published:


Let's say the building has 'n' floors, each fllor has meeting rooms & work-stations, each room has several objects (table, chairs, tv..).
Find the cost of perticular room, complete floor or a building.

Meeting Room 1:

Item
Cost

TV
90000

Chairs
150000

Table
200000

Total:
440000



Floor 1:

Meeting Room1          440000

Meeting Room2          650000

Total: 1090000


class Object:
    name = None
    value = None
    containsObject = None
    pass

def getCostOfMultipleObjects(manyObjectOfBuilding):
    totalCost = 0
    for obj in manyObjectOfBuilding:
        totalCost += getCost(obj)
    return totalCost

def getCost(anyObjectOfBuilding):
    if anyObjectOfBuilding.containsObject is not None and len(anyObjectOfBuilding.containsObject) > 0:
        return anyObjectOfBuilding.value + getCostOfMultipleObjects(anyObjectOfBuilding.containsObject)
    else:
        return anyObjectOfBuilding.value

table1 = Object()
table1.name = 'table_1'
table1.value = 5

lamp1 = Object()
lamp1.name = 'lamp_1'
lamp1.value = 1

tv1 = Object()
tv1.name = 'tv_1'
tv1.value = 3

meetingRoom1 = Object()
meetingRoom1.name = 'meetingRoom_1'
meetingRoom1.value = 10
meetingRoom1.containsObject = [lamp1, table1]

meetingRoom2 = Object()
meetingRoom2.name = 'meetingRoom_2'
meetingRoom2.value = 20
meetingRoom2.containsObject = [lamp1, table1, tv1]

floor1 = Object()
floor1.name = 'floor_1'
floor1.value = 20
floor1.containsObject = [meetingRoom1, meetingRoom2]

builing1 = Object()
builing1.name = 'building_1'
builing1.value = 100
builing1.containsObject = [floor1]

print('t1', getCost(table1))
print('m1', getCost(meetingRoom1))
print('m2', getCost(meetingRoom2))
print('f1', getCost(floor1))
print('b1', getCost(builing1))
Comment