Add recursive example for finding a key in nested boxes (Python) (#290)
This commit is contained in:
50
03_recursion/python/08_look_for_key.py
Normal file
50
03_recursion/python/08_look_for_key.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Item have 2 types: key or box
|
||||||
|
class Item:
|
||||||
|
def __init__(self, is_key=False):
|
||||||
|
self.is_key = is_key
|
||||||
|
|
||||||
|
# If not a key, it's a box that can hold items
|
||||||
|
self.items_in_box = []
|
||||||
|
|
||||||
|
def is_a_box(self):
|
||||||
|
return not self.is_key
|
||||||
|
|
||||||
|
def is_a_key(self):
|
||||||
|
return self.is_key
|
||||||
|
|
||||||
|
|
||||||
|
def look_for_key(box: Item):
|
||||||
|
for item in box.items_in_box:
|
||||||
|
if item.is_a_box():
|
||||||
|
# recursive case
|
||||||
|
look_for_key(item)
|
||||||
|
elif item.is_a_key():
|
||||||
|
# base case
|
||||||
|
print("found the key!")
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
main_box
|
||||||
|
├── box_A
|
||||||
|
│ ├── box_B
|
||||||
|
│ └── box_C
|
||||||
|
└── box_D
|
||||||
|
└── box_E
|
||||||
|
└── key
|
||||||
|
"""
|
||||||
|
main_box = Item()
|
||||||
|
|
||||||
|
box_A = Item()
|
||||||
|
box_B = Item()
|
||||||
|
box_C = Item()
|
||||||
|
box_A.items_in_box = [box_B, box_C]
|
||||||
|
|
||||||
|
box_D = Item()
|
||||||
|
box_E = Item()
|
||||||
|
key = Item(is_key = True)
|
||||||
|
box_E.items_in_box = [key]
|
||||||
|
box_D.items_in_box = [box_E]
|
||||||
|
|
||||||
|
main_box.items_in_box = [box_A, box_D]
|
||||||
|
|
||||||
|
look_for_key(main_box)
|
||||||
Reference in New Issue
Block a user