게임 – 숫자와 4칙을 한번씩만

이번에 어떤 행사에 스텝으로 참여하게 되었는데, 그 행사 중에 게임을 하는 시간이 있다. 어제(8일)는 각 게임의 진행자를 뽑고, 필요한 준비물 중에 협조가 필요한 물건에 대해 도움을 줄 사람을 찾았다.

그리고 다들 각자 소속되어 있는 팀원들과 회의를 하거나 준비하기 위해 각 처소로 흩어졌는데, 필자가 속해있는 팀은 별다른 준비사항이나 회의할 내용이 없기 때문에 메인팀에 합류하여 각 게임에 필요한 문제를 만드는 일을 거들었다. 여러 문제들 중 4개의 1자리 숫자로 10을 만드는 게임의 문제가 있어서 프로그래밍해서 해결하면 되겠다 싶어 본인이 하겠다고 하여 집으로 가지고 왔다.

이 게임의 진행방법은 1~9까지의 한 자리 숫자 4개를 진행자가 제시하면 그 사이에 4칙 연산자(더하기+, 빼기-, 곱하기*, 나누기/)를 넣어 숫자에 연산자를 대입한 결과값이 10이 나오도록 하면 되는것이다. 숫자와 연산자는 한문제 내에서 각각 한번씩만 사용이 가능하다.

7 2 1 5

라는 숫자가 주어졌다면, 답은

7 2 + 1 * 5

가 되는 것이다.

프로그래밍을 시작했고, 숫자와 연산자를 구하는 부분까지는 비교적 수월하게 진행되었다. 그런데 문제는 이 숫자와 연산자를 구한 뒤에 계산하는데서 발생되는데, 임의의 연산자를 구해서 숫자와 합쳐서 출력하는데는 별 무리가 없었지만, 이 연산의 결과가 10인가 아닌가에 따라 결과를 출력하느냐 아니면 연산자를 다시 임의로 배열하여 연산의 결과를 만드는가로 구분하는 것이다.

이거 꽤 복잡하다. 그래서 무식하게 4개의 겹치지 않은 숫자와 사이에 넣을 연산자를 겹치지 않게 5천개 생성하여 CSV형식으로 만들어저장하였다.

그리고 자동필터로 결과가 10인것만 골라내었다. 대략 100개 가까이 나오는군.

아~ 그 후로 몇 번인가 더 수정을 해보고 다른 자료들을 찾다보니 문자형식의 변수 내용이 계산식일 때 계산해 내는 함수를 만들어 놓은것을 찾아내서 적용해 봤더니 계산이 되는 것이다.

이것으로 10인것만 골라 출력하도록 바꾸어서 해결봤다는 말씀!

결과를 보고 싶으신 분은 이 링크를 누르시라, 주소창에 t=다음에 숫자를 넣으면 결과의 갯수, f=다음에 넣으면 계산한 숫자의 갯수를 정할 수 있다. r=은 결과로 나올 값을 정한다. 기본은 50개 결과를 나오도록 했고, 4개의 숫자로 계산하도록 만들었고 10이 결과가 되도록 만들었다.

We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Privacy Policy