Skip to content

Latest commit

 

History

History
35 lines (23 loc) · 2.69 KB

README.md

File metadata and controls

35 lines (23 loc) · 2.69 KB

Necodong AI Contest: Five!

2018년 NDC 부대행사로 넥슨 프로그래밍 동호회 네코동에서 주최한 AI 챌린지에 DoomGuy 라는 닉네임으로 참여한 코드입니다.

규칙 및 히스토리

홈페이지 참조

아이디어 구상

  • 필승법은 없어 보인다.
  • 2016 파이콘에서 있었던 코딩 배틀 이야기를 보니 생각보다 경향성 있는 랜덤이 강한 추세.
  • 히스토리를 가져올 수 있어서 상대방 패턴을 분석하는 코드들이 많이 나올 것으로 보임.
  • 하지만 6선승인 관계로 그사이에 충분히 패턴을 파악할 수 있을까에 대한 의문.
  • 규칙을 파악할 수 없을 땐 패 리딩으로 승률이 높은 카드를 뽑을 것 같다.
  • 그러므로 지지 않는 패를 내는 랜덤한 카드를 내자. 라는 무성의한 발상으로 작업을 시작.

전략

  • 일반적인 랜덤함수를 사용할 수 없었기에 클래식 둠의 슈도랜덤을 사용한다(그래서 닉네임을 둠가이로 결정했습니다).
  • 해당 라운드의 첫 번째 카드는 무작위 선택을 한다.
  • 이후 라운드마다 손에 있는 카드를 뒤섞어서 첫 번째 부터 확인하면서 지지 않는 카드라면, 다시 말해 이기거나 비기는 카드라면 선택한다. 만약 모든 카드가 이기지 못한다면, 무작위 선택을 한다.

TODO

  • 지지 않는 카드를 내지만 남은 덱을 확인했을 때 압도적인 승률을 가졌으면 그렇게 내는 게 리그전에서 승을 더 많이 챙기는 방법으로 추정.
  • 라운드의 두 번째부터 상대방 수를 읽어서 80~90% 이상의 승률을 가지는 케이스가 있다면 그에 해당하는 카드를 내자.

하지만 당시 몬스터헌터 월드에 빠져서 추가 구현하는 데 실패하였습니다.

교훈

  • 아이디어 구상부터 무성의한 접근 방식으로 top 8에 드는 데 실패하였습니다.
  • 잠시 머리속에 시뮬 결과보다 중간집계 결과가 잘 나온 것과 위의 코딩 배틀 이야기 결과에서도 보여주듯이 단순한 문제도 조금만 변칙을 주게 된다면 직관과는 다른 결과가 나오는 것을 확인하였습니다. 머릿속의 피상적인 생각보다 실제 시뮬을 해보고 통계를 내보아서 확인하는 습관이 중요하다고 되새김질하였습니다.
  • 시간제한이 걸린 경쟁 작업이 재밌었습니다. 하지만 생각해낸것을 끝까지 구현하지 못한게 스스로도 아쉽고 부끄럽게 느껴집니다.