- import time 
- import numpy as np 
- import gc 
-   
- def fib_stack1(n): 
-     """ Original function """ 
-     assert type(n) is int, 'Expected an integer as input.' 
-     if n < 2: 
-         return n 
-     else: 
-         stack = [0, 1] 
-         for i in range(n-1): 
-             stack.append(stack[-1] + stack[-2]) 
-         return stack[-1] 
-   
- def fib_stack2(n): 
-     """ Modified function """ 
-     assert type(n) is int, 'Expected an integer as input.' 
-     if n < 2: 
-         return n 
-     else: 
-         stack = [0, 1] 
-         for i in range(n-1): 
-             stack.append(stack[-1] + stack[-2]) 
-             ### CHANGE ### 
-             stack.pop(-3) 
-             ############## 
-         return stack[-1]  
-   
-   
- rec1 = [] 
- rec2 = [] 
- rec3 = [] 
- rec4 = [] 
- for _ in range(5): 
-     t1 = time.time() 
-     fib_stack1(99999)   
-     t2 = time.time() 
-     rec1.append(t2-t1) 
-   
-     t1 = time.time() 
-     fib_stack2(99999)   
-     t2 = time.time() 
-     rec2.append(t2-t1) 
-   
-     gc.disable() 
-   
-     t1 = time.time() 
-     fib_stack1(99999)   
-     t2 = time.time() 
-     rec3.append(t2-t1) 
-   
-     t1 = time.time() 
-     fib_stack2(99999)   
-     t2 = time.time() 
-     rec4.append(t2-t1) 
-   
-     gc.enable() 
- print(np.array(rec1).mean()) 
- print(np.array(rec2).mean()) 
- print(np.array(rec3).mean()) 
- print(np.array(rec4).mean()) 
				aW1wb3J0IHRpbWUKaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBnYwoKZGVmIGZpYl9zdGFjazEobik6CiAgICAiIiIgT3JpZ2luYWwgZnVuY3Rpb24gIiIiCiAgICBhc3NlcnQgdHlwZShuKSBpcyBpbnQsICdFeHBlY3RlZCBhbiBpbnRlZ2VyIGFzIGlucHV0LicKICAgIGlmIG4gPCAyOgogICAgICAgIHJldHVybiBuCiAgICBlbHNlOgogICAgICAgIHN0YWNrID0gWzAsIDFdCiAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobi0xKToKICAgICAgICAgICAgc3RhY2suYXBwZW5kKHN0YWNrWy0xXSArIHN0YWNrWy0yXSkKICAgICAgICByZXR1cm4gc3RhY2tbLTFdCgpkZWYgZmliX3N0YWNrMihuKToKICAgICIiIiBNb2RpZmllZCBmdW5jdGlvbiAiIiIKICAgIGFzc2VydCB0eXBlKG4pIGlzIGludCwgJ0V4cGVjdGVkIGFuIGludGVnZXIgYXMgaW5wdXQuJwogICAgaWYgbiA8IDI6CiAgICAgICAgcmV0dXJuIG4KICAgIGVsc2U6CiAgICAgICAgc3RhY2sgPSBbMCwgMV0KICAgICAgICBmb3IgaSBpbiByYW5nZShuLTEpOgogICAgICAgICAgICBzdGFjay5hcHBlbmQoc3RhY2tbLTFdICsgc3RhY2tbLTJdKQogICAgICAgICAgICAjIyMgQ0hBTkdFICMjIwogICAgICAgICAgICBzdGFjay5wb3AoLTMpCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjCiAgICAgICAgcmV0dXJuIHN0YWNrWy0xXSAKCgpyZWMxID0gW10KcmVjMiA9IFtdCnJlYzMgPSBbXQpyZWM0ID0gW10KZm9yIF8gaW4gcmFuZ2UoNSk6CiAgICB0MSA9IHRpbWUudGltZSgpCiAgICBmaWJfc3RhY2sxKDk5OTk5KSAgCiAgICB0MiA9IHRpbWUudGltZSgpCiAgICByZWMxLmFwcGVuZCh0Mi10MSkKICAgIAogICAgdDEgPSB0aW1lLnRpbWUoKQogICAgZmliX3N0YWNrMig5OTk5OSkgIAogICAgdDIgPSB0aW1lLnRpbWUoKQogICAgcmVjMi5hcHBlbmQodDItdDEpCiAgICAKICAgIGdjLmRpc2FibGUoKQogICAgCiAgICB0MSA9IHRpbWUudGltZSgpCiAgICBmaWJfc3RhY2sxKDk5OTk5KSAgCiAgICB0MiA9IHRpbWUudGltZSgpCiAgICByZWMzLmFwcGVuZCh0Mi10MSkKICAgIAogICAgdDEgPSB0aW1lLnRpbWUoKQogICAgZmliX3N0YWNrMig5OTk5OSkgIAogICAgdDIgPSB0aW1lLnRpbWUoKQogICAgcmVjNC5hcHBlbmQodDItdDEpCiAgICAKICAgIGdjLmVuYWJsZSgpCnByaW50KG5wLmFycmF5KHJlYzEpLm1lYW4oKSkKcHJpbnQobnAuYXJyYXkocmVjMikubWVhbigpKQpwcmludChucC5hcnJheShyZWMzKS5tZWFuKCkpCnByaW50KG5wLmFycmF5KHJlYzQpLm1lYW4oKSk=