본문 바로가기
개발자료(학급,수업운영)/학급게임자료

카드맞추기(논리) - 논리적으로 카드를 맞추는 프로그램

by 민서아빠(과학사랑) 2013. 5. 27.

 

카드맞추기(논리).zip
다운로드

 

본 프로그램은 컴퓨터가 카드를 맞추는 프로그램이 아닙니다.
컴퓨터가 골라준 카드를 가지고 선생님이 직접 카드를 맞추어 주는 마술입니다.

원래는 2명이 서로 협동해서 해야 하지만 그렇지 못한 관계로 그 1명을 컴퓨터가 하도록 만들었습니다.
상당히 논리적인 마술이지요

임백준씨가 쓴 '누워서 읽는 퍼즐북' 에 나왔던 퍼즐이기도 합니다.

설명을 보지 말고 생각해 보시기 바랍니다.

<문제>
1. 상대방이 내가 보지 못하는 상태에서 52장의 카드중 5장의 카드를 고릅니다.
2. 내가 보지 못하는 상태에서 내 조수가 그중에 1장을 골라서 상대방에게 줍니다.
3. 그리고 나머지 4장의 카드를 나에게 줍니다.
4. 그럼 내가 그 4장의 카드를 보고 상대방이 가지고 있는 카드를 맞추는 마술입니다.

실제 마술에서 구현되기도 했다고 하네요

이 문제의 핵심은 4장의 카드를 가지고 논리적으로 모든카드를 표현해 낼 수 있느냐는 문제입니다.
설명을 보지 말고 한번 생각해 보시기 바랍니다.




<사용방법>

1. 선생님은 컴퓨터 화면을 보지 않고 있어야 합니다.
2. 학생이 나와 컴퓨터 에 나와있는 카드중 5장을 고릅니다.
3. 그럼 컴퓨터가 5장의 카드중 1장을 골라 상대방에게 보여주고 나머지 4장만 화면에 표시합니다.
4. 4장이 화면에 나오면 학생이 선생님께 화면을 보여 줍니다.
5. 선생님은 화면을 보시고 학생이 기억하고 있는 카드가 어떤 카드인지 맞추어 냅니다.
6. 다음 버튼을 눌러 선생님이 말한 카드가 맞는지 확인합니다.
(학생들은 놀라움에 사로잡히게 되며, 선생님이 사기를 쳤다고 의심하게 됩니다.)

<해법>
잘 이해가 안되는 사람은 프로그램을 실행시켜 놓고 생각해 보시기 바랍니다.

규칙은 이렇습니다.
컴퓨터가 감춘 1장의 카드에 대한 정보를 화면에 나타낸 나머지 4장의 카드가 순서대로 논리적인 규칙을 가지고 알려주고 있습니다.
1번째 카드의 무늬가 숨겨진 카드의 무늬가 됩니다.
그리고 1번째 카드의 숫자를 기억하세요
2번째카드가 2번째,3번째,4번째 카드중 가장 작은수이면 1두번째 작은수이면 3 가장큰수이면 5만큼 1번째 카드의 숫자에서 더해 갑니다.(13보다 커지면 다시 1부터 시작합니다.)
3번째 4번째 카드가 숫자가 순서대로 있으면 위 숫자에 0을 역순서로 되어 있으면 1을 더하면 그 숫자가 컴퓨터가 감춘 숫자가 됩니다.

우리 민서도 3번 정도 해보더니 이해합니다. 어려워 보이지만 몇번 해보시면 금방 이해하실 수 있습니다.

한가지 더 숫자크기가 같을때는 무늬로 순서를 정하는데 (클로바, 다이아몬드, 스페이드, 하트)순으로 크기가 커집니다.

예)
스페이드2, 하트3, 다이아몬드7, 하트9, 클로바8 - 이렇게 5장의 카드가 있었는데
1장이 감춰지고 나타난 4장의 카드가
하트3, 클로바8, 다이아몬드7, 스페이드2 라고 하면
숨겨진 카드가 첫번째 카드에서 무늬는 하트라는 것을 알수 있고 
2번째 카드가 2,3,4 카드중 제일 큰수이므로 첫번째 하트3의 3에다가 5를 더해야 함을 알 수 있고
3번째 4번째 카드의 숫자가 역순서대로 되어 있으므로 더하기 1을 하면 됩니다.

그럼 3+5+1 이 되므로 9가 됩니다.

즉 감추어진 카드의 값은 하트9가 되는 것입니다.


논리적으로 잘 맞아 떨어지기 때문에 재미있네요.
컴퓨터가 아니라 조수를 한명 데리고 훈련을 시켜서 무대에서 할수도 있는 마술입니다.