Recursive backtracking function: how to clear variables on new function call?
I've been trying to write a simple function to make lists of all the Young diagrams/partitions between a starting partition ('top') and an ending partition ('bot'), with each step in the list a covering relation (exactly one box difference in each step).
For instance, I would like to input [2,1] for top and  for bot and get
as my outputs. (I want to do this because it's useful for some computations with Littlewood-Richardson coefficients; having the lists that give each partition in a path between top and bot will be useful for other computations.)
My code at present has an echo, and worse, I can't figure out where to initialize path_list. Where do I put path_list =  -- or create other lists -- to make sure that:
- I get a separate list for each path, and
- Calling the function again clears path_list?
(2) is worst: right now, since path_list is an internally-defined variable, I get the following bad behavior:
sage: load "makepartitionlist.sage"
[, , ]
[, , ]
because path_list is not cleared when I call get_path again (which I'd hoped putting path_list =  in the arguments would accomplish).
def get_path(top, bot, path_list = ): path_list.append(top) if top == bot: print path_list return path_list if not Partition(top).contains(Partition(bot)): return None for i in range(0,len(Partition(top).down_list())): p = Partition(top).down_list()[i] if Partition(p).contains(bot): path_list.append(p) get_path(p, bot, path_list)
I'm using Sage 5.0.1 with Sage-combinat providing the Partition function and others.