# dsa-anagram-call-stack.py
import showcallstack as ss
def anagrams(string):
# ss.showcallstack()
if len(string)==1:
return string[0]
= []
collection = anagrams(string[1:])
substr_anagrams for anagram in substr_anagrams:
ss.showcallstack()for i in range(len(anagram)+1):
= anagram[:i]+string[0]+anagram[i:]
new_string
collection.append(new_string)return collection
"abc") anagrams(
1. Install showcallstack
pip install showcallstack
oruv add showcallstack
(if usinguv
)
2. Save anagrams
function to a .py
(python script)
3. Run .py
script from terminal
uv run dsa-anagram-call-stack.py
4. showcallstack()
: High-Level
This function shows information about callstack.
Note:
- The local variables to the
showcallstack()
depends where the function call is placed
5. showcallstack()
: Low-Level
Placing the function call inside the for loop shows the a greater granularity of local variables of each call in the call stack.
# dsa-anagram-call-stack2.py
import showcallstack as ss
def anagrams(string):
# ss.showcallstack()
if len(string)==1:
return string[0]
= []
collection = anagrams(string[1:])
substr_anagrams for anagram in substr_anagrams:
ss.showcallstack()for i in range(len(anagram)+1):
= anagram[:i]+string[0]+anagram[i:]
new_string
collection.append(new_string)return collection
"abc") anagrams(
Note:
- The iteration of
i
below