/usr/lib/libsora.so

OMR카드와 2진법

다들 중, 고등학교때 OMR 카드를 봤을 것이다. 중, 고등학교때 중복답안이 존재하는 문제도 풀어봤을 것이다. 그리고 채점 결과를 받아봤을 것이다. 그것을 보면 자신이 어떤 답을 골랐고 맞췄나 틀렸나도 알 수 있다. 대부분의 문제는 답을 1개만 골랐을테니 숫자로 뜨지만 중복답안의 경우는 A~Z을 이용한다.

이를 잘 이용하면 다음과 같은게 가능하다.

dobby is free

시험 오답코드로 만들어낸 (트위터 원본은 계정이 플텍이 되어서 링크를 걸 수 없었다)

내가 중3 2학기 기말고사, 고3 2학기 기말고사때 했던짓을 지금도 누군가는 하고있더라. (중3 2학기 기말고사, 고3 2학기 기말고사는 고입, 대입에 영향을 주지 않아서 마음껏 말아먹었다) 옛날 생각이 나서 오답 코드 관련 글을 써보기로 했다. 내가 고3 기말고사를 본게 2006년이라서 아직도 같은 코드를 쓰고있는지는 모르겠다.

2 ** 5 = 32

중고등학교때의 OMR 카드면 문제당 5개의 플래그가 붙어있다. 2 ** 5로 32가지 답이 가능하다. 1글자로 표현가능한 32가지 오답코드가 필요하다.

1~5의 경우는 숫자를 그냥 쓰면 된다. 아무것도 고르지 않은 경우는 ? 를 쓴다. (짤을 보니 요새는 - 를 쓰는거같다)

32-5-1 = 26개의 선택지를 1글자로 표현가능한게 뭐가 있을까? 알파벳이 여기에 적합하다. A~Z까지 전부 쓰면 26개이다.

덕분에 에러 코드를 이용하면 대문자로 구성된 영어 문장을 쓸 수 있다.

오답 코드 계산

중3때는 A~Z까지의 코드를 외웠다가 시험 시작하자마자 적어놓고 OMR 카드를 썻다. 멍청한건지 똑똑한건지 지금와서 생각하면 구분이 안된다.

고3때는 오답 코드가 어떤식으로 할당되었는지 깨달아서 손쉽게 OMR 카드를 썻다. 2진법으로 풀어쓰니까 패턴이 보이더라.

0~31 -> 2진법

32가지 경우의 수를 2진법으로 풀어서 쓴다. 각각의 자리수는 OMR 카드의 1~5로 맵핑된다.

number 2^0 2^1 2^2 2^3 2^4
0
1 x
2 x
3 x x
4 x
5 x x
6 x x
7 x x x
8 x
9 x x
10 x x
11 x x x
12 x x
13 x x x
14 x x x
15 x x x x
16 x
17 x x
18 x x
19 x x x
20 x x
21 x x x
22 x x x
23 x x x x
24 x x
25 x x x
26 x x x
27 x x x x
28 x x x
29 x x x x
30 x x x x
31 x x x x x

코드 할당

코드를 넣는 규칙(?)은 간단한다

  1. 아무것도 선택하지 경우는 (-)
  2. 2**N으로 표현 가능한 수의 경우 1~5 (숫자)
  3. 작은거부터 큰 순서대로 A~Z (알파벳)
number 1 2 3 4 5 code
0 -
1 x 1
2 x 2
3 x x A
4 x 3
5 x x B
6 x x C
7 x x x D
8 x 4
9 x x E
10 x x F
11 x x x G
12 x x H
13 x x x I
14 x x x J
15 x x x x K
16 x 5
17 x x L
18 x x M
19 x x x N
20 x x O
21 x x x P
22 x x x Q
23 x x x x R
24 x x S
25 x x x T
26 x x x U
27 x x x x V
28 x x x W
29 x x x x X
30 x x x x Y
31 x x x x x Z

summary

아직도 오답 코드가 똑같은지 모르겠다. 내가 마지막으로 본게 12년전이니까. 심각한 결함이 있는것도 아니니까 똑같을거같기도 하고. 아직도 똑같다면 내년 2학기 기말고사를 마음껏 말아먹어 보는건 어떨까?

Comment

comments powered by Disqus