John Salerno wrote: > bruno at modulix wrote: > > > Now if I may ask: what is your actual problem ? > > Ok, since you're so curious. :) > > Here's a scan of the page from the puzzle book: > http://johnjsalerno.com/spies.png > > Basically I'm reading this book to give me little things to try out in > Python. There's no guarantee that this puzzle is even conducive to (or > worthy of) a programming solution.
So what you're trying to do is to run over all possible combinations? Anyway you don't need to worry about identity, since boolean values are immutable. In general when you see statement like some_var = immutable value you can be *sure* you're changing *only* some_var Warning! Half-spoiler below :) Following is a function run_over_space from my personal utils package for generating all combinations and an example how it can be applied to your puzzle: def decrement(point, space): """ Yield next point of iteration space """ for coord in range(len(point)): if point[coord] > 0: point[coord] -= 1 return else: point[coord] = space[coord] continue raise StopIteration def run_over_space(space): """ Yield all points of iteration space. Space is a list of maximum values of each dimension""" point = space[:] while True: yield point decrement(point,space) def describe_point(spy,w,x,y,z): if spy: print "Spy1 is right, ", else: print "Spy1 is wrong, ", print "w, x, y, z = ", w, x, y, z for point in run_over_space([1,1,1,1,1]): describe_point(*point) -- http://mail.python.org/mailman/listinfo/python-list