〈60cm 통로 판정이 63cm 틈에서 실패하는 이유〉를 쓰고 나서 한동안 그 문제를 그대로 뒀다. 이번에 통로 계산을 처음부터 다시 짰는데, 그 전에 예전 계산이 정확히 언제 틀리는지부터 다시 확인했다. 이 글은 그 기록이다.

틈 하나로만 지나갈 수 있는 방

정답을 확실히 아는 방이 필요했다. 300×400cm 방 가운데를 옷장 두 개로 벽에서 벽까지 막고 틈을 하나만 남겼다. 방 안쪽으로 가려면 이 틈을 지나야 하니, 지름 60cm인 사람이 지나가는지는 틈이 60cm 이상인지만 보면 된다.

틈을 59, 60, 61, 63, 68cm로 바꿔 가며 넣었다. 새 계산은 59cm만 막혔다고 했고 나머지는 지나간다고 했다. 60cm는 양쪽 옷장에 몸이 딱 스치는 경우라 여유가 0인데, 이 사이트는 닿기만 한 건 겹침이 아니라는 기준을 쓰고 있어서 지나가는 쪽으로 판정했다.

옷장100×60옷장139×60출입구 80300400
6161cm 틈을 지나는 길

예전 계산이 틀린 이유를 다시 보니

예전 글에는 10cm 간격 점 때문에 판정이 최대 10cm쯤 엄격하다고 적었다. 맞는 말이지만 그게 다가 아니었다. 같은 63cm 틈을 오른쪽으로 1cm씩 옮기며 10번 넣어 보니 예전 계산은 그중 4번만 통과시켰다. 60cm 틈은 1번, 68cm 틈은 9번이었다. 틈 안에 10의 배수 좌표가 하나라도 들어가면 통과, 아니면 실패였던 것이다. 가구를 1cm 옮겼다고 답이 바뀌는 계산은 믿고 쓰기 어렵다. 새 계산은 10번 모두 같은 답을 냈다.

글에 나온 배치도 다시

노트에서 옷장을 185에 둔 배치는 예전 계산이 '미확인'이었는데 새 계산은 지나갈 수 있다고 한다. 그 자리를 다시 재 보니 가로로 63cm, 세로로 23cm 떨어진 두 모서리 사이였고, 모서리끼리의 실제 거리는 67.1cm였다. 예전 계산은 가구 둘레 여유 공간을 네모나게 잡아서 이 대각선을 가로 63cm로만 봤다. 새 계산은 여유 공간의 모서리를 둥글게 잡는다. 찾은 길에서 가장 좁은 곳은 66.1cm로 나오는데, 모서리 사이 거리보다 1cm쯤 작은 건 길을 일정 간격의 점을 따라 긋기 때문이다.

슈퍼싱글110×200책상105×50옷장100×60출입구 80320380
185옷장 185: 가로 63cm, 모서리 사이 67.1cm

판정을 미룬 두 건

모서리끼리 마주 본 틈도 58cm부터 63.6cm까지 8가지로 넣어 봤다. 예전 계산은 8가지 모두 막혔다고 했다. 63.6cm 틈까지 그랬다. 새 계산은 59.5cm 이하를 막힘, 60.1cm 이상을 통과로 맞게 답했고, 59.8cm, 60cm에서는 답을 내지 않고 '검증 안 됨'을 띄웠다. 60cm와 0.2cm 안쪽으로 차이 나는 틈이라 점 간격을 1.25cm까지 줄여도 확정하지 못했다. 틀린 답을 내는 것보다는 모른다고 하는 편이 낫다고 보고 그대로 뒀다.

새 계산은 이렇게 판단한다

길을 하나 찾으면 그 길을 따라가며 벽과 가구까지의 거리를 처음부터 끝까지 다시 잰다. 한 군데라도 30cm보다 가까우면 그 길은 쓰지 않는다. 그래서 '연결됨'이 떴다면 그 길은 실제로 지나갈 수 있다. '막힘'이라고 할 때는 반대로, 혹시 설 수 있을지 모르는 자리까지 넉넉하게 열어 둔 상태에서도 길이 안 나는지 본다. 둘 다 확인이 안 되면 '검증 안 됨'이다.

세어 보면

이번 실험에서 틈이 60cm 이상인데 예전 계산이 막혔다고 한 경우가 21번 나왔다. 못 지나가는 틈을 지나간다고 한 경우는 0번이었다. 새 계산은 틀린 답이 0번, 미룬 답이 2번이다.

60cm는 이 사이트가 정한 기준이고 법적 기준이 아니다. 몸을 옆으로 틀면 더 좁은 틈도 지나가고, 빨래 바구니를 들면 60cm로는 모자란다.

데이터

EXP-002계산으로만 해 본 실험 (실제 방을 재지 않음)새 계산 v2.0.0 · 예전 계산 v1.0.0확인 21/21 PASS

틈정답예전 계산새 계산지나는 길의 가장 좁은 곳 (cm)결과
59cm막힘미확인막힘–PASS
60cm연결됨연결됨연결됨60PASS
61cm연결됨연결됨연결됨61PASS
63cm연결됨연결됨연결됨63PASS
68cm연결됨연결됨연결됨68PASS
틈예전 계산이 통과시킨 위치새 계산이 통과시킨 위치결과
59cm0/100/10PASS
60cm1/1010/10PASS
63cm4/1010/10PASS
68cm9/1010/10PASS
옷장 왼쪽 끝가로 틈모서리 사이 거리예전 계산새 계산가장 좁은 곳결과
2068487.1연결됨연결됨80PASS
1957376.5연결됨연결됨75.2PASS
1906871.8연결됨연결됨69.9PASS
1856367.1미확인연결됨66.1PASS
대각선 틈 (cm)정답예전 계산새 계산결과
58막힘미확인막힘PASS
59막힘미확인막힘PASS
59.5막힘미확인막힘PASS
59.8막힘미확인검증 안 됨PASS
60연결됨미확인검증 안 됨PASS
60.1연결됨미확인연결됨PASS
61연결됨미확인연결됨PASS
63.6연결됨미확인연결됨PASS

정답은 어떻게 구했나. 가로막은 방은 "틈이 60cm 이상이면 지나간다"는 한 줄로 정답이 정해진다. 모서리끼리 마주 본 틈은 "모서리 사이 거리가 60cm 이상이면 지나간다"가 정답이다. 이와 별도로 플래너 코드를 쓰지 않는 Python 프로그램이 방 바닥에 1cm 간격으로 점을 찍고, 사람이 설 수 있는 점을 문에서부터 이어 가며 같은 결과가 나오는지 확인했다. 예전 계산 결과는 예전 규칙을 Python으로 다시 짠 것과 맞춰 봤다.

플래너에서 열기

사이트 저장소에서 아래 세 줄을 실행하면 이 파일들이 다시 만들어진다. 계산 코드를 고치고 이 파일을 다시 만들지 않으면 사이트가 만들어지지 않게 해 두어서, 글의 숫자와 플래너 계산이 어긋난 채로 올라가지 않는다.

python tools/scenarios.py --dump
node tools/run_experiments.mjs
python tools/verify_experiments.py