파이썬 공부하기 시작한지 한 5일정도 됐는데

어제던가 이틀전이던가 누가 8x8체스판에 8개의 말을 서로 가로,세로,대각선에 겹치지 않게 놓는 경우의 수를 찾는 문제를 올렸길래

n x n에서 경우의수랑, 그 경우의 수에 대응하는 좌표를 뽑는걸 만들어보면 어떨까 싶어서 오늘 해봤는데

폭삭 망한거 같습니다. 안돌아가요....

일단 파이썬으로 돌려봐도 에러는 안뜨는거 보면 알고리즘에 문제가 있는거 같은데..

어디서 문제가 있는지 모르겠습니다.


제가 짠 코드는 이런식입니다.


n값을 받음

-> n x n 행렬을 생성

-> 각각의 행렬에 해당하는 포인트에 (좌표, 다른 말과 겹치는 칸인지 TF, 말을 놓은 칸인지 TF)를 알 수 있는 클래스를 부여

-> 1열에서 순서대로 하나를 선택(for), 그 좌표에 해당하는 포인트의 3번째 속성값을 T로 변경

-> 1열에 놓은 말과 가로,세로,대각선을 공유하는 포인트의 2번째 속성값을 F로 변경

-> 2열의 포인트 중 2번째 속성이 T인 포인트의 세로축 값을 구한 뒤 제너레이터로 구성

-> 생성된 2열의 제너레이터에서 순서대로 하나를 선택(for), 그 좌표에 해당하는 포인트의 3번째 속성값을 T로 변경

-> ..... (재귀함수)

  만약 마지막 열에 도달하기 전에, 혹은 마지막 열에 도달할때 생성된 제너레이터가 값을 가지고 있지 않다면 다음 포인트를 선택(pass)

  만약 마지막 열에 도달했고, n개의 말을 모두 놓았다면 카운트 1증가 + 말이 놓여진 포인트의 좌표들로 이루어진 리스트를 생성


[removed][removed]

이렇게 만들어진 코드가 아래 링크입니다.

https://gist.github.com/anonymous/10163ec11b86d31205545e082b9bacd9

어디에 문제가 있는걸까요...ㅠㅠ