수도쿠로 숫자와 친해지기(엑셀 매크로(VBA)로 스도쿠 프로그램 만들기(1/3)(2022.6.4 압데이트)

by 지천명영어 posted Jun 01, 2022
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

이 수도쿠 프로그램은 사람이 하는 반복적인 행위를 엑셀이 하고, 사람은 문제의 핵심을 파악하면서, 수도쿠 풀이를 즐길 수 있도록 만들고 있습니다. (단, 수도쿠가 너무 어려워 좀 더 많이 배워야 쓸만한 수도쿠 프로그램이 될 것 같습니다.)

 

2022.6.8 업데이트 수도쿠(지천명영어)_12.xlsm

1ST 시도
간단한 문제는 한번에 풀립니다.
(퍼팩트 숫자가 나올 경우)
2ND 시도
퍼팩트 숫자가 없이, 복수로 이루어진 후보만 나올때
최저빈도구간계산
1건단독 - 1번만 나온 숫자
복수건 - 2번 이상 나온 중복된 숫자
(수도쿠 풀이에 가장 중요)
최저빈 도우미
최저빈도가 확정된 숫자를 붉은색으로 표시해 줍니다.
멀티 페어2
후보 숫자가 2개인 곳의 pair를 찾아서 행, 열, 스몰박스에서 pair를 제거한다
멀티 페이4
(네이키드 쿼드)
행,열.스몰박스에서 4개의 셀에 4개 숫자로 이루어진 경우, 그 행.열.스몰박스에서 그 숫자를 제거한다
숫자지배의 범위
(소드피쉬) 선택된 숫자가 사용 가능함 범위를 시각적으로 표시함(4pair, 6pair)
숫자지배 도우미
최저 빈도가 가장 작은 숫자를 골라줍니다.
X윙 X윙을 검색합니다
주변셀과 상호작용
행.종.스몰박스에서 최빈값이 2회인 숫자를 골라서, 외부의 동일 숫자를 제거한다(최저빈 도우미 조작 후 작동됨)
처음색칠하기
처음에 문제를 가져오면,
제출된 숫자를 파란색으로 바꿔줍니다.
리셋
파란색 숫자를 제외하고 나머지 지움
초 부분 리셋
(하나씩 확인용)
숫자는 안 지우고, 복수로 이루어진 숫자는 지움
개발 예정 링크 기법,히든 계열(히든페어, 히든 트리플, 히든 쿼드)
개발예정 없음 소드피쉬, 젤리피쉬, , , XY윙, XYZ윙, 핀드X윙, 사시미X윙

 

 

2022.6.4 업그레이드 (09버전)

- 숫자지배의 범위(2차원 해결) 도입

- 주변셀과의 관계 로직 정정

 

세상에서 제일 어렵다는 수도쿠 문제는 이 프로그램으로는 1개도 못 풀었습니다. 수도쿠 정말 어려운 게임이네요.

 

2022-06-04 02 26 12.png

 


저는 천성이 숫자랑 친하지 않아서, 유망한 직종인 경영, 경제, 통계를 하지 못했습니다. 1980년대는 계량 경제가 유행이었으며, 아직도 여전히 숫자는 세상을 지배합니다.

 

과거의 프로그램은 수학을 잘하는 분이 잘 할 수 밖에 없을 정도로 숫자를 잘 이해했어야 합니다. 하지만, 지금은 End user 친화적인 프로그램도 많아서 저 같은 사람도 간단한 프로그램은 직접 만들어서 사용할 수 있습니다.

 

금융계에 오래 근무하다 보니, 약간은 숫자와 친해진 덕분이기도 합니다.

그래도 여전히, 행열과 같이 복잡한 수식이 등장하면, 여전히 모릅니다. 제가 만든 프로그램은 행열을 사용하지 않고 대부분 처리합니다. 전 한번도 class모듈을 이용해서 class를 사용해 보지 않았습니다.

 

그래서, 행열을 좀 더 이해하고자, 대표적 주자 스도쿠 문제 풀이 엑셀 프로그램을 만들어 보고자 합니다.

단, 제가 스도쿠를 엑셀로 풀어내는 방법은 전산을 전문적으로 다루는 분들과는 좀 다른 방식으로 만들 수 밖에 없습니다.

 

숫자와 친해지기 위한 스도쿠 만들기 입니다.

 

2022-06-01 23 24 26.png

(클릭하면, 큰 그림으로 볼 수 있습니다.)

 

사용법은 간단합니다. 

1번 버튼은 수도쿠 문제를 불러옵니다. 문제가 저장된 곳에서 랜덤하게 불러옵니다. 따라서, 본인이 문제를 더 추가할 수도 있습니다.

 

2번 버튼이 불러온 문제를 푸는 기능입니다.

첫번째 시도는 간단한 문제는 직접 풀어냅니다. 

수도쿠가 행으로 1부터 9까지, 열로 1부터 9까지 그리고, 작은 박스에도 1에서 9까지 중복되지 않게 빈칸을 채우면 되는 간단한 게임입니다.

 

그래서, 총 81칸에 빈칸이 작은 문제 일수록 풀기 쉽습니다. 

초급자용은 첫번째시도(1st try) 버튼으로 풀리기도 합니다.

 

하지만,,, 행.열,작은박스가 1부터 9까지 숫자 중 1개의 숫자가 확정 안되는 경우도 많이 있습니다. 그런 경우가 어렵습니다.

 

이 경우는 행.열.소박스 뿐 아니라, 주변의 상관관계로 함께 검토해야 합니다. 이 때 사용하는 버튼이 2nd try버튼 입니다. 2nd try 버튼으로 생성된 복수의 후보군이 생성됩니다.

 

이 후보군들도 많기 때문에 찾기 쉽지 않습니다. 이때, 3번 버튼 최저빈구간계산 버튼을 사용하세요. 빈도수가 낮다는 뜻은 바로 단독으로 사용가능한 정답 후보라는 의미입니다.

4번 버튼을 누르면, 정답 후보를 정확히 알려줍니다. 

 

사실 이렇게 풀어도, 고급문제(고난이도)는 풀기가 쉽지 않습니다. 컴퓨터 도움을 받아도 쉽지 않은 문제를 손으로 푸는 분들 대단하시네요.

 

간단한 동영상과 프로그램을 첨부합니다.

 

그냥 꾹꾹 눌러 보시면 쉽게 알 수 있습니다. 

 

다음에 프로그램 만드는 코드를 설명 드리겠습니다.