the script is failing without a useful report

N

nvictor

hi all,

need your help. i get a traceback that doesn't tell much about the
actual error in my code:

Traceback (most recent call last):
File ".\eightqueens.py", line 32, in <module>
generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)

here is the full source:

def generate(n, x, col, up, down):
for h in range(8):
# place a queen
if col[h] and up[n-h] and down[n+h]:
x[n] = h
col[h] = False
up[n-h] = False
down[n+h] = False
n += 1

# 8 queen placed?
if n == 8: print x
else: generate(n, x, col, up, down)

# displace a queen
n -= 1
col[h] = True
up[n-h] = True
down[n+h] = True


if __name__ == '__main__':
n = 0
x = [None]*8
col = [True]*8
up = [True]*15
down = [True]*15
generate(n, x, col, up, down)


thanks a lot in advance
 
M

MRAB

hi all,

need your help. i get a traceback that doesn't tell much about the
actual error in my code:

Traceback (most recent call last):
File ".\eightqueens.py", line 32, in<module>
generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)
File ".\eightqueens.py", line 17, in generate
else: generate(n, x, col, up, down)

here is the full source:

def generate(n, x, col, up, down):
for h in range(8):
# place a queen
if col[h] and up[n-h] and down[n+h]:
x[n] = h
col[h] = False
up[n-h] = False
down[n+h] = False
n += 1

# 8 queen placed?
if n == 8: print x
else: generate(n, x, col, up, down)

# displace a queen
n -= 1
col[h] = True
up[n-h] = True
down[n+h] = True


if __name__ == '__main__':
n = 0
x = [None]*8
col = [True]*8
up = [True]*15
down = [True]*15
generate(n, x, col, up, down)
The traceback ends with:

RuntimeError: maximum recursion depth exceeded

I think what's happening is that if the 'if' condition just after the
"# place a queen" comment is false then 'n' won't be incremented, and
therefore 'generate' will call itself with the exactly same values
which were passed in, resulting in infinite recursion (or at least
until the limit is reached).
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
44,999
Latest member
MakersCBDGummiesReview

Latest Threads

Top