[2017 삼성 육목대회] 7. 교내 대회용 최종 프로그램

최종적으로


PlayerFactor[6] = { 0.0, 1.0, 2.0, 6.0, 0.0, 0.0 };

OpponentFactor[6] = { 0.0, 1.05, 5.0, 11.05, 0.0, 0.0 };

Breadth = 4

MaxDepth = 5


로 설정했습니다. 사실 3일 사이에 수많은 삽질을 했는데, 나의 Move와 상대의 Move를 저장하고 있다가 Is_Conn6 함수, Count_Threat 함수에서 계산할 때 기존의 코드보다 조금 더 효율적으로 짜려고 했습니다. 하지만 잘 짜지지 않았고 어쩔 수 없이 다 롤백했습니다.


Depth는 얼추 충분해보이지만 Breadth가 약간 아쉽습니다. 코드를 조금 더 효율적으로 짰으면 아마 Breadth = 6 정도까지는 가능하지 않았을까 싶습니다.


한 수당 시간제한이 7초이므로 6.2초가 지난 후에는 강제적으로 Depth를 따라 더 들어가지 못하도록 코드를 손봤습니다. 그런데 아마 이것저것 다 켜놓은 제 컴퓨터에서 돌려도 대충 5초 이내로 계산이 완료되는걸 보면 6.2초라는 한계선에 도달하는 일은 없을 것 같습니다.(만약 대회가 이루어지는 컴퓨터의 성능이 매우 안좋을 경우에도, 최적의 해를 내지는 못할지언정 시간초과로 인한 실격을 막기 위해서 꼭 필요한 제한이었습니다.)


시간이 더 있었다면 효율적인 Factor를 내부적으로 계속 대결하면서 찾아나갈 수 있었을텐데 그것까지 짜기에는 시간이 좀 부족했습니다. 1인팀이어서 그런 것일 수도 있겠네요. 또 Block의 존재 때문에 기계학습을 전혀 이용하지 못했습니다. 지금도 딱히 어떻게 학습을 해야할지에 대해서는 별 아이디어가 없습니다.


뭐 어찌됐든 거의 20시간? 30시간? 가까이 쏟아부어서 프로그램을 만들어냈습니다. 또 일주일 내내 계속 육목에 대해 고민을 많이 했습니다. 정말 오랜만에 나의 모든 것을 털어넣어 집중할 수 있었던 대회였습니다. 이제 밀린 학교숙제들을 처리해야겠네요.


  Comments