지오맨시는 실제로 어떻게 계산되나요?
표 대조는 어디에도 없어요 — XOR을 네 번 반복할 뿐이에요.
Bokki 편집실
짧은 답
지오맨시(ʿilm al-raml, '모래의 학문')는 열여섯 형상을 읽는 점법이에요. 각 형상은 능동(점 하나)이거나 수동(점 두 개)인 네 행을 쌓은 거고요. 복키 엔진의 chart()는 상황에 맞춰 형상을 표에서 찾지 않아요 — 매번 새로 세워요. 먼저 네 어머니를 뽑고, 그 행을 전치해 네 딸을 만들고, 어머니·딸을 짝지어 더해 네 조카를 얻고, 조카를 짝지어 더해 증인 둘을, 그 증인 둘을 더해 마지막 답인 심판관을 얻어요. 이 덧셈은 전부 같은 연산이에요 — 능동 둘이 만나면 수동, 수동 둘이 만나면 수동, 서로 다르면 능동, 즉 정확히 XOR을 행마다 네 번 돌리는 거예요. 저희 참고 자료의 고전 워크드 예제를 실제 엔진에 그대로 넣어 봤더니 심판관까지 교과서와 정확히 같은 사슬이 나왔어요.
열여섯 형상, 4비트 하나씩
형상 하나는 그냥 네 개의 예/아니오 답이에요 — 화(火)·풍(風)·수(水)·토(土) 네 행이 각각 능동이거나 수동이거나요. 그래서 가능한 형상은 정확히 2⁴ = 16개, 넷 다 수동인 Populus부터 넷 다 능동인 Via까지예요. 복키의 FIGURE_NAME 표가 열여섯 형상 전부의 이름을 갖고 있고, figureRows()는 어느 형상이든 다시 1과 0 네 개로 읽어내요. 시드에서 형상을 뽑는 과정은 결정적이에요 — 복키는 시드 문자열을 해시한 뒤 시드 달린 의사난수로 4비트를 채워요. 저희 룬·오검 뽑기가 이미 쓰는 것과 같은 구성이고, 심판관을 세우는 계산 자체에는 Date.now()도 Math.random()도 안 들어가요.
실측 예시 — 어머니 넷에서 심판관 하나로
주어진 어머니 넷으로 시작해요: Carcer·Albus·Puer·Coniunctio. 행으로 적으면(火·風·水·土, 능동=1/수동=0) Carcer는 1,0,0,1, Albus는 0,0,1,0, Puer는 1,1,0,1, Coniunctio는 0,1,1,0이에요. 이 네 행을 전치하면 딸 넷이 나와요 — 첫째 딸은 네 어머니의 火 행을 가로질러 읽고, 둘째 딸은 風 행을, 이런 식이에요 — Amissio·Fortuna Major·Acquisitio·Amissio(다시)가 나와요. 어머니를 짝지어 더하고(어머니1+어머니2, 어머니3+어머니4) 딸도 같은 방식으로 더하면 조카 넷이에요: Puella·Puella·Carcer·Via. 조카를 짝지어 더하면 증인 둘, Populus와 Coniunctio가 나오고, 그 둘을 더하면 심판관에 닿아요: 다시 Coniunctio — 이 점의 최종 답이에요. 그 네 행 0,1,1,0의 능동(●) 개수는 둘, 짝수예요 — 손으로 뽑은 점에서 잘못 그린 형상을 잡아내는 고전적 검산 규칙이고, 이 사슬은 그 규칙을 저절로 만족해요. 어머니들의 능동 비트 개수가 짝수 개면 XOR이 그 짝수성을 끝까지 그대로 지키기 때문이에요.
같은 사슬, 실제 도구가 돌리는 그대로
/geomancy는 저희 룬·오검 화면과 같은 방식으로 시드를 만들어요: chart(`raml:${오늘}:${화두}`), 화두는 사용자가 입력한 말이거나 아무것도 안 넣은 빈 문자열이에요. 2026년 8월 23일, 화두 없이 물으면 엔진은 어머니로 Caput Draconis·Caput Draconis·Acquisitio·Fortuna Minor를 뽑고, 위와 같은 사슬을 거쳐 심판관은 Acquisitio — '얻음'으로 떨어져요. 따뜻하게 읽을 결이지 약속이 아니에요. 같은 질문을 두 번 물으면 명식이 행 하나까지 완전히 같아요, 시드가 안 바뀌니까요. 화두 칸에 낱말 하나만 적어 넣으면 어머니부터 그 아래 전부가 완전히 달라져요. 여기 어떤 것도 좋은 이야기를 만들려고 고른 게 아니에요 — 해시 4비트와 XOR 네 바퀴가 내놓는 결과 그대로예요.
우리가 계산하지 않는 것
복키는 열여섯 형상 중 열둘 — 어머니 넷·딸 넷·조카 넷 — 을 뽑지만, 전통 지오맨시가 특정 질문(직업·건강 등)에 답할 때 쓰는 열두 점성 하우스에는 배정하지 않아요. 저희 엔진은 상징적인 증인·심판관에서 멈춰요. 화해자(Reconciler)도 화면에 따로 계산해 보여주지 않는데, chart()는 내부적으로 그 값(심판관+어머니1)을 반환하지만 저희가 신뢰하는 출처로 그 전통적 해석을 아직 대조하지 못했기 때문이에요. 모래판에서 점을 실제로 세던 원래 방식도 저희는 제공하지 않아요 — 시드가 그 단계를 대신하고, 무작위성은 오직 그 시드 하나예요. 사람의 사주·생년월일·신원 같은 건 아무것도 안 들어가요. 그리고 심판관을 예보로 다루지 않아요 — 그 형상은 함께 머물러 볼 결을 가리키지, 일어날 사건을 가리키지 않아요(D-003).
맺음말 — 형상 열둘, XOR 한 번, 심판관 하나
정리하면, 지오맨시 명식은 어디서도 표를 찾지 않아요. 시드에서 어머니 넷을 뽑고, 전치해서 딸 넷을 만들고, 짝지어 더해 조카 넷을, 다시 더해 증인 둘을, 마지막으로 더해 심판관을 얻어요 — 다섯 단계, 매 단계 같은 행별 XOR이에요. 고전 워크드 예제(어머니 Carcer·Albus·Puer·Coniunctio)를 실제 엔진에 넣으면 교과서와 정확히 같은 사슬이 나오고, 심판관 Coniunctio에서 끝나며 그 네 행의 활성은 둘, 짝수예요 — 내장된 검산이에요. 화두 없이 오늘의 실제 제품 시드를 돌리면 같은 사슬이 다르지만 똑같이 실제인 심판관, Acquisitio에 닿아요 — 명식을 바꾸는 유일한 입력은 시드 문자열 자체뿐이고, 그 안의 낱말 하나를 바꾸면 그 아래 전부가 달라지기 때문이에요. 저희는 열여섯 형상 중 열둘만 뽑고 거기서 일부러 멈춰요 — 점성 하우스도 없고, 화면에 따로 보여주는 화해자도 없고, 심판관을 결 이상의 것으로 읽지도 않아요.