Developfordummies 10

깊이있는 삽질 Ubuntu Korea Community Wiki
이동: 둘러보기, 검색

문제 발생[편집]

  1. 아 !!! wiki 문법을 내가 왜 맞춰야 하는데.....
  2. 사실 sudoku 처음 만드는 거다.
  3. 어쩌라고....

문제 해결 방안 모색[편집]

  1. 띠로리~~ wiki 문법이 뭐야. 그냥 기존 문서 copy copy 후 수정하자!!!!
  2. sudoku 만드는 법을 찾아보자!!

시작하자[편집]

  1. 일단 가장 큰 직관성이 보이는 순서도를 택한다. 앞서 얘기했듯이 난 똑똑한 편이 아니라 뭘 적어놓지 않으면 금새 잊어 버린다. 근데 글로 쓰기는 너무 귀찮고.... 초등학교 시절 "양가양가미양"을 기록하던 미술과목을 떠올리며 순서도를 선택했다. 다행히 이 놈은 내 미적감각을 덜 발휘해도 그려진다. 일단 그려보자.

Sudoku 1st flow chart.png

좀 과장된 면이 약간 있긴 하지만 난 이렇게 순서도를 만든다. 괜히 어려운 영어와 전문용어로 내 눈을 정화시키고 싶지 않다. 그냥 순서도는 나를 위한 것이라 생각하고 누구한테 보여주기 싫다(이렇게 만든걸 누구한테 보여주나..ㅡ.ㅡ).

  1. 알겠어 만들자고..... 근데 어떻게 만들어??????
    • (아 위키 문법 정말 귀찮다...ㅜ.ㅜ)앞서 그린 순서도 별로 대략 함수를 만든다. 나는 직관적이라 생각하는데 안 그럴수도 있다. 메인 함수는 으흐흐 귀차나......(생략)
void start()
{
}
void choose_a_level()
{
}
void create_question()
{
}
void solving_question()
{
}
void end()
{
}
int main(void)
{
  int sudoku[9][9];
  start();
  choose_a_level();
  create_game();

써놓고 보니 분량을 날로 먹은 것 같다.!!!!!! 으하하하하 즐겁다. 근데 이거 코드는 정렬 우찌하는겨ㅜㅜ

위와 같이 대략적인 순서도를 그린 다음 각 블락별로 세부적인 상황을 하나씩 하나씩 추가하며 기존 순서도는 놔두고 필요하면 블락별 순서도를 다시 그린다.(사실 합체할 능력이 안된다. 중학교 때 도형 공부 좀 열심히 할걸..... ㅡ.ㅡ;;;;)

start()[편집]

  • 일단 나 시작했어 라는 글자 정도는 띄워줘야 하지 않을까? printf()!!!! 히히히
  • 그 다음 사용 방법이라든가 만든이라든가 뭐 이딴 것들 띄워주면 될 거 같다. 일반 게임에서 intro 동영상 나오듯이... 나는 생략..
  • 일반적으로 스도쿠 모양은 9X9 배열이므로 요기에 대해 설정해준다. main() 함수에 sudoku[9][9]으로 선언하였다.

짠!!!!

void start()
{
    printf("Hello World\n"); /* start 문구로는 요게 최고다!! 그냥 그렇다!! 토달지 말아라 !! */
}

choose_a_level()[편집]

  • 레벨을 설정하자.
  • 레벨에 따라 스도쿠가 변형되어야 하므로 이건 나중에 생각한다. defalut로 1로 잡자. 추후 사용자에게 입력 받는 걸 택한다.
  • 사용자에게 입력받은 걸 알려줘야 하므로 return 함수로 교체교체!!!!. 글을 쓰다보니 레벨 설정하는 건 나중 문제로 삭제하고 싶은데.. 그냥 놔두기로 한다.......
int choose_a_level()
{
  return 1;
}

create_a_question()[편집]

여기부터 조금씩 하나하나 스도쿠라는 게임을 뜯어봐야 한다는 생각이 든다. 스도쿠 관련한 여러 문서들을 검토해보자.

  • 스도쿠 기본틀 모양(아 테이블 ㅜ.ㅜ;;;)

아래와 같은 모양대로 초기 sudoku[9][9] 내용을 초기화 한다.

스도쿠 기본 모양
1 2 3 4 5 6 7 8 9
4 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 1 4 3 6 5 8 9 7
3 6 5 8 9 7 2 1 4
8 9 7 2 1 4 3 6 5
5 3 1 6 4 2 9 7 8
6 4 2 9 7 8 5 3 1
9 7 8 5 3 1 6 4 2

(-.- 두께와 표 폭을 수정하고 싶지만.. 나의 인내심이 한계다...)

  • 여러가지 스도쿠 모양 (기본 모양에서 여러 모양으로 변하는 방법을 알아보자. 아래 첨부 문서를 확인하면 된다.)

파일:Sudoku change 1st.ods 숫자 노가다의 곤욕이구나... (출처: 구글링고고!!)

  • Mutual exchange of two digits - 변환하는 방법에 대해 알아보자. 여기부터는 인터넷이나 기타 문서를 참고하지 않으려고 노력할 것이다. 때문에 필자의 무지함이 굉장히 많이 노출될 것임에도 여러 문서에 나와 있는 식을 도용하는 방법보다는 한 번쯤은 자신이 어떠한 문제를 해결하려는 노력 또한 프로그래밍에 굉장히 많은 도움이 될 것이라고 생각하기 때문이다. 서론이 길었다. 자~ 한번 시작해 보자.
    • Exchange two digits1.png
    • 너무 대충 만들었다고 따지기 없기!!!!! 누가 이런 것 좀 해주세용~!~!~!~! ㅎㅎㅎ
    • 일단 한 번 분석을 해봐야 겠다는 생각에 오른쪽 그림에 나와있는 것 처럼 1과 9의 위치를 표시하고 순서쌍으로 나타내어 보았다. 방법은 (위치1, 위치9)
      • ( 0, 20), (21, 14), (15, 8)
      • (28, 46), (49, 40), (43, 34)
      • (56, 72), (77, 66), (71, 60)
    • 다음은 위치 차이에 대해 적어보았다.
      • 20 7 7
      • 18 9 9
      • 16 11 11