미로 이야기
11자 코드 하나로 어떻게 같은 미로를 다시 만들까요?
이 페이지의 목차
미로는 짧은 코드로부터 브라우저에서 다시 만들어져요. 벽과 통로를 브라우저가 직접 생성하므로 저장된 미로 도안을 내려받지 않아도 친구와 같은 미로를 즐길 수 있어요. 글로벌 랭킹에 기록을 제출하면 미로 코드는 그 기록과 함께 저장돼요.
이 페이지는 그 비밀인 시드, 미로 코드, 생성 알고리즘을 소개합니다. 수학이 조금 나오지만 가볍게 읽을 수 있게 썼어요.
시드 — 미로의 씨앗
미로는 난수(무작위 수)로 만들어지지만 이 게임의 난수는 진짜 무작위가 아니라 시드라는 숫자에서 출발하는 의사난수입니다. 같은 시드에서 시작하면 난수열이 언제나 똑같이 재현되죠.
그래서 시드와 난이도만 있으면 미로 전체(벽의 배치, 시작점, 도착점)가 그대로 다시 만들어집니다. 어느 나라의 어떤 기기에서 열어도 결과는 비트 하나까지 같습니다. 소수점 오차가 끼어들지 않도록 생성기는 정수 연산만 사용해요.
미로 코드 해부하기
미로 코드는 M1-7-03NQK8N5처럼 생겼습니다. 하이픈을 빼면 정확히 11글자예요. 맨 앞 M, 포맷 버전 1자, 난이도 1자, 시드 7자, 그리고 마지막 검사 문자 1자로 이루어져 있어요.
글자는 Crockford Base32라는 문자 집합을 씁니다. 숫자 0~9와 알파벳에서 I, L, O, U를 뺀 대문자들이죠. 헷갈리는 글자를 처음부터 제외해서 손으로 적거나 읽어 불러주기 좋고 실수로 O를 적어도 0으로 알아서 해석해 줍니다. 소문자·하이픈·공백도 자유예요.
마지막 문자는 앞의 문자들로 계산한 체크섬이에요. 흔한 입력 실수를 찾는 데 도움이 되지만 모든 오타를 검출하지는 못해요. 코드를 손으로 옮기지 않으려면 공유 링크나 QR 코드를 이용하세요.
미로가 자라나는 방법
생성 알고리즘은 Growing Tree(자라나는 나무)입니다. 한 칸에서 출발해 이웃 칸으로 통로를 뚫으며 나무처럼 자라나는데, 가장 최근 칸에서 계속 뻗으면 길고 구불구불한 복도가, 아무 칸에서나 뻗으면 갈림길이 많은 미로가 됩니다. 난이도에 따라 이 두 성향을 섞어요.
일부 난이도에서는 막다른 길의 벽을 더 뚫어 순환로와 다른 이동 경로를 만들어요. 난이도 5~7은 이런 추가 통로 없이 나무처럼 갈라지는 구조를 유지해요. 순환로는 길을 고르는 방식을 바꾸지만 그 비율이 난이도마다 계속 늘어나지는 않아요.
출발점과 도착점은 미로 테두리에서 경로 거리를 탐색해 서로 멀리 떨어지도록 골라요. 정답 경로가 해당 난이도의 목표보다 짧으면 최대 8회 다시 생성하고 목표에 도달하면 멈춰요. 끝까지 목표에 못 미치면 마지막 결과를 사용해요. 모든 미로에는 도착점까지 가는 길이 있고, 고정된 규칙을 따르므로 같은 코드는 같은 미로를 만들어요.
짧은 코드로 공유하기
공유 링크와 인쇄물의 QR 코드에는 벽 배치 전체 대신 페이지 주소와 미로 코드가 들어 있어요. 받은 쪽 브라우저가 코드로부터 미로를 다시 만들기 때문에, 가장 큰 60×60 미로도 같은 11자 코드 형식으로 표현할 수 있어요.