내일 먼저 c++로 옮겨보고
도저히 안될 것 같으면 파이썬으로 옮겨봐야겠다.
승리판정과 3 3 판정의 전체 알고리즘
- pair<int,int> d[4] = {{1, 1}, {-1,1}, {0,-1}, {1, 0}}
- for(int i = 0; i < 4; i++) { 승리판정(d[i]); }
- for(int i = 0; i < 4; i++) { 3 3 판정(d[i]); }
왜 방향이 4개밖에 없는가?
기울기가 중복되는 요소는 전부 배제했기 때문
현재 방향의 승리판정 의사코드
- 간선이 끊길 때까지 방향 쪽으로 나아감
- 간선이 끊길 때까지 방향의 반대쪽으로 나아감
- 나아간 수는 i. i가 5와 같으면 승리판정
렌주룰 3 3 판정 의사코드
- 현재 방향의 선이 한 턴 후 3이 가능한지 조사
- 한 턴 후 3이 가능한 곳의 수직에 한 턴 후 3이 가능한 선이 있는지 조사
- 있다면 해당 좌표에 금지 판정
현재 방향의 선이 한 턴 후 3이 가능한지 조사하는 알고리즘
- 간선이 끊길 때까지 방향 쪽으로 나아감.
- 간선이 끊길 때까지 방향의 반대쪽으로 나아감.
- 나아가는 수는 1씩 증가하지만 조사는 3씩 한꺼번에 함.
- 만약 sum == 2라면 그 선은 한 턴 후 3이 가능한 것.
수직한 선을 구하는 알고리즘
- 방향벡터에 0이 포함되어있다 -> 0의 방향을 반대로 바꿔줌
- 아니라면 -> x값에 -1을 곱해줌