배우고 싶다. 배우기 쉽다.

닫기버튼

배우고 싶다. 배우기 쉽다.

닫기버튼

인기검색어🔥

학과소식

자유게시판

세종사이버대학교는 여러분과 함께 희망찬 미래를 꿈꾸고 만들어 갈 것입니다.

파이썬 프로그램 오류 발생했는데 원인을 알수 없어 문의 합니다.

date2020.08.07

view717

# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ #상태를 나타내는 클래스 class State: def _init_(self, board,goal, moves=0): self.board = board self.moves = moves self.goal = goal # i1과 i2를 교환하여서 새로운 상태를 반환한다. def get_new_board(self, i1, i2, moves): new_board = self.board[:] new_board[i1], new_board[i2] = new_board[i2], new_board[i1] return State(new_board, self.goal, moves) #자식노드를 확장하여서 리스트에 저장하여서 반환한다. def expand(self, moves): result = [] i = self.board.index(0) #숫자 0(빈칸)의 위치를 찾는다. if not i in [0,1,2] : #up 연산자 result.append(self.get_new_board(i, i-3, moves)) if not i in [0,3,6] : #left 연산자 result.append(self.get_new_board(i, i-1, moves)) if not i in [2,5,8] : #right 연산자 result.append(self.get_new_board(i, i+1, moves)) if not i in [6,7,8] : #down 연산자 result.append(self.get_new_board(i, i+3, moves)) return result #객체를 출력할 때 사용한다. def _str_(self): return str(self.board[:3]) +"\n"+\ str(self.board[3:6]) +"\n"+ \ str(self.board[6:]) +"\n"+ \ "----------------------" #초기상태 puzzle = [1,2,3, 0,4,6, 7,5,8] #목표상태 goal = [1,2,3, 4,5,6, 7,8,0] #open 리스트 open_queue=[ ] open_queue.append(State(puzzle,goal)) #// 오류 발생 라인 closed_queue=[ ] moves = 0 while len(open_queue) != 0: # 디버깅을 위한 코드 # print(START OF OPENQ") # for elem in open_queue: # print(elem) # print("END OF OPENQ") current = open_queue.pop(0) #open 리스트의 앞에서 삭제 print(current) if current.board == goal : print("탐색 성공") break moves = current.moves+1 closed_queue.append(current) for state in current.expend(moves): if (state in closed_queue) or (state in open_queue): #이미 거처간 노드이면 continue # 노드를 버린다. else: open_queue.append(state) # open 리스트이 끝에 추가 << 인공지능 : 파이썬으로 배우는 머신러닝과 딥러닝 , 천인국 지음 >> << 오류 내요 >> File "F:\EDU_2020\02. anaconda\f01_temp.py", line 53, in open_queue.append(State(puzzle,goal)) TypeError: State() takes no arguments