| | |
Adding queens to my visual chessboard.
Please support our Python advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: May 2008
Posts: 33
Reputation:
Solved Threads: 0
So here is my program:
My state is in the form [[1,1],[2,0]] etc. This is just an example, because this cannot be a valid state according to the problem.
I had to make a visual representation of a chessboard. I did that with printState(state). The problem is, right now it's just printing the chessboard, and I'm confused on how, after passing state, it can actually place a 'Q' in one of the blank spots. Maybe I did this a bad way?
Can anyone help?
Also, I asked my teacher for help on these other two things but, if anyone knows why my candidateRules(state) is printing all the rules all the time, or see any other issues with this, I would appreciate it.
I AM NOT ASKING FOR YOU GUYS TO DO THIS ASSIGNMENT. I seemed to have had someone think that I was doing that the last time I posted a question, but I came with code and have tried my hardest before coming here. There is no point to come here without trying, I'm just trying to get some extra help.
Thanks.
python Syntax (Toggle Plain Text)
#!/usr/local/bin/python #Scott Landau #CS 380 #Assignment 1 Programming Portion in Python #Created - 4/6/09 #Last Edited - 4/22/09 import pdb #n is going to be equal to 4 for this queens problem. n = 4 #Assigning the empty list to initialState. initialState = [] #Making an allDirections list. allDirections = [[-1,0],[1,0],[0,-1],[0,1],[-1,-1],[-1,1],[1,-1],[1,1]] #declare the list 'state' which represents the number of non threatening #queens that have been placed on the board. state = [] def goal(state): if ((len(state)) == n): return True else: return False #defining allRules list which the contents of which will be created in next function. allRules = [] #defining all the rules for an nxn board. assigning these rules to allRules def makeRules(n): for i in range(0, (n), 1): for j in range(0, (n), 1): allRules.append([i,j]) return #this function will apply the rule that is in the rule list to the given state, which just appends it to the state list. def applyRule(rule,state): state.append(rule) return #returns true if the row or column of 'pos' is out of bounds. def outOfBounds(pos): if ((pos[0] < 0) or (pos[0] > (n-1)) or (pos[1] < 0) or (pos[1] > (n-1))): return True else: return False #function that will determine which positions queens cannot be placed into because they might eventually run into another queen already on the board. def blocked(pos,state,direction): newpos = [(pos[0]+direction[0]),(pos[1]+direction[1])] if newpos in state: return True elif outOfBounds(newpos): return False else: return True blocked(newpos,state,direction) #precondition to the actions checker def precondition(rule,state): for k in range(0, 8): if blocked(rule,state,(allDirections[k])): return False return True #generating a list of candidate rules def candidateRules(state): temp = [] temp = allRules for l in range(0,(len(state)),1): number = temp.count(state[l]) for m in range(1,number,1): temp.remove(state[l]) return temp #applicable rules. use candidate and then precondition def applicableRules(state): newRules = candidateRules(state) for n in range(0,(len(newRules)),1): if not precondition(newRules[n],state): newRules.remove(newRules[n]) return newRules #make a rule look "pretty" def printRule(rule): print "Place a queen in " + str(rule) return #same for a state def printState(state): hboard = "+---" vboard = "| " for a in range(0,n,1): print hboard + hboard + hboard + hboard print vboard + vboard + vboard + vboard print hboard + hboard + hboard + hboard return #backTrack algorithm def backTrack(state): firstState = state[0] new = state[1:] number = new.count(firstState) if (number > 0): return "FAILED 1" if (goal(firstState)): return "GOAL" if ((len(state)) > depthBound): return "FAILED 3" ruleSet = applicableRules(firstState) if (ruleSet == []): return "FAILED 4" for r in range(0,(len(ruleSet)),1): newState = applyRule((ruleSet[r]),firstState) newStateList = state.insert(newState, 1) path = backTrack(newStateList) if (path): return path.append(ruleSet[r]) return "FAILED 5" #test printState(state)
My state is in the form [[1,1],[2,0]] etc. This is just an example, because this cannot be a valid state according to the problem.
I had to make a visual representation of a chessboard. I did that with printState(state). The problem is, right now it's just printing the chessboard, and I'm confused on how, after passing state, it can actually place a 'Q' in one of the blank spots. Maybe I did this a bad way?
Can anyone help?
Also, I asked my teacher for help on these other two things but, if anyone knows why my candidateRules(state) is printing all the rules all the time, or see any other issues with this, I would appreciate it.
I AM NOT ASKING FOR YOU GUYS TO DO THIS ASSIGNMENT. I seemed to have had someone think that I was doing that the last time I posted a question, but I came with code and have tried my hardest before coming here. There is no point to come here without trying, I'm just trying to get some extra help.
Thanks.
•
•
Join Date: Apr 2009
Posts: 12
Reputation:
Solved Threads: 4
•
•
•
•
Oh, and apparently my blocked function is not recursive? I thought it was, but it needs to be, so any help I'll takeIf not though that's fine too.
![]() |
Other Threads in the Python Forum
- Previous Thread: sort a list with python
- Next Thread: Help Needed With Tic Tac Toe Game Using Graphics
| Thread Tools | Search this Thread |
Tag cloud for Python
ansi assignment avogadro backend beginner binary bluetooth character cmd code customdialog cx-freeze data decimals dictionary drive dynamic error examples excel exe file float format ftp function gnu graphics gui heads homework http ideas import input java leftmouse line linux list lists logging loop module mouse number numbers output parsing path pointer port prime program programming progressbar projects push py2exe pygame pyqt python random recursion recursive refresh schedule screensaverloopinactive script scrolledtext sqlite ssh statistics stdout string strings sudokusolver sum table terminal text thread threading time tkinter tlapse tricks tuple tutorial ubuntu unicode update urllib urllib2 variable wikipedia windows write wxpython xlib






If not though that's fine too.