저는 Python 코딩 클래스 용 프로젝트를 작성 중이며 질문이 있습니다. 나는 Reversi 엔진을 쓰고 있는데,이 엔진은 게임에서 몇 가지 움직임을 보일 것이고 그 다음에 그것이 최선이라고 생각하는 움직임을 고를 것이다. 필자는 Python이이 언어에 이상적인 언어가 아니라는 것을 이해하지만 (다른 언어만큼 빠르지 않기 때문에) 최소한 기능적이지만 조금 느린 코드를 작성하는 것이 가능하다고 생각합니다.게임 트리를 만들 때 어떤 모듈을 사용해야합니까?
즉, 저는 게임 보드 (매트릭스라고 생각하십시오)와 정수를 보유 할 게임 트리라는 두 개의 테이블을 만들려고합니다. 나는 메모리 효율이 높고 빠른 것을 사용하여 항목을 추가, 삭제 및 읽는 것을 원합니다.
지금 사용하고있는 보드는별로 효율적이지 않습니다. 나는 누군가가 (모듈을 사용하는 방법에 대한 지침과 함께) 어떤 모듈을 제안했는지 물어보고 싶었다. (예 : array, numpy; 나는 다음 중 하나를 사용하는 방법을 모른다.) :
self.board = [[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 1, 2, 0, 0, 0,],
[0, 0, 0, 2, 1, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,]
[0, 0, 0, 0, 0, 0, 0, 0,],
[0, 0, 0, 0, 0, 0, 0, 0,]]
게임 트리의 경우 목록의 목록이 얼마나 가벼운 지에 따라 아이디어가 있습니다. 나는 표준 파이썬으로 작성된 함께 일하고 있어요 아이디어는 유사하다 : 각 %는 위의 보드 중 하나 (:하지 굽이마다 정확히 세 가지 옵션을 가지고 있으며, 이상적인 이상입니다) 것
tree_zero = %
tree_one = [%, %, %]
tree_two = [[%, %, %], [%, %, %], [%, %, %]]
tree_thre = [[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
tree_four = [[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]],
[[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]],
[[%, %, %], [%, %, %], [%, %, %]]]]
. 하지만 이것은 느리고 무거운 물건으로 파이썬이 메모리를 효율적으로 사용하기 어렵습니다 (특히 4가보다 깊다면).
누구든지 이와 같은 프로그램을 사용해 본 적이 있거나 수입 할 효율적인 모듈 아이디어가 있다면 알려주십시오!
게임 트리의 예를 들면 wikipedia page과 특히 페이지의 첫 번째 그림을 생각해보십시오.
EDIT : 이상적으로, 앞으로 네 가지 움직임을 바라는 것이 이상적입니다. 이것은 처음 네 레벨이 어떻게 보이는지 보여주는 예입니다. 또한 사용하기 위해 주변에 떠 다니는 주어진 나무의 사본이 여러 개있을 것입니다. 속도는 이와 같이 기하 급수적으로 커지는 것에 중요합니다.
3 가지 움직임만을 앞두고 있기 때문에이 작업은 엄청나게 메모리 집약적이어서는 안됩니다. 코드가 있습니까? –
[이 주제에 대한 다른 질문] (http://stackoverflow.com/search?q=reversi)을 확인해보십시오. –
파이썬리스트는 원하는 모든 것이 아이템에 무작위로 접근 할 수 있다면 실제로 좋은 객체입니다.리스트 자체는 아무런 문제가 없습니다. 리프 노드 나 더 읽기 쉬운 형식의 서브 트리를 검색 할 수있는 트리 객체를 직접 만들 수 있습니다. 그러나 거기에있는 내부 데이터가 목록 목록으로 유지되면 괜찮습니다. – jsbueno