Chen Yin-ChenCYCU Biz Design
Home
About
AboutSchedule
Courses
Computational Thinking & ProgrammingNatural Science & Artificial IntelligenceProgramming Language Introduction
Interactive
Variable SwapMonty HallBetting SimulatorSliding PuzzleTower of Hanoi
Programming
JS Basic TutorialJavaScriptP5.js (Lecture)
Applications
Human Motion SystemAstrology SystemArchitecture SystemIndigenous Loom

Language

Traditional ChineseSimplified ChineseEnglishJapaneseBahasa Indonesia

Chen Yin-Chen

Business Design Department, Chung Yuan Christian University
Zishen Technology

Quick Links

  • About
  • Schedule
  • Games
  • JavaScript

Contact & Social

© 2026 Chen Yin-Chen。All rights reserved。

Built with Next.js & Tailwind CSS

🌌 系統概論🔮 排盤引擎📊 資料結構⚡ 四化狀態機🤖 規則引擎

玄學系統 · 資料結構

十二宮位 — 環狀陣列與模數運算

「安命宮」的邏輯就是 % 12。調整生月與時辰,看命宮如何在陣列中跳動。

6 月
未時 (idx=7)
子(0)午(6)亥(11)
步驟演示 0/5

命宮演算法

命宮 index=(12+ 生月(6)+ 2− 時辰(7)+ 1)%12= 2

1D 環狀陣列 [0…11] — 地支索引

idx=0子
idx=1丑
idx=2寅命宮
idx=3卯
idx=4辰
idx=5巳
idx=6午
idx=7未
idx=8申
idx=9酉
idx=10戌
idx=11亥

2D 命盤網格(同一資料,不同視圖)

子福德
丑父母
寅命宮★
卯兄弟
辰夫妻
巳子女
午財帛
未疾厄
申遷移
酉交友
戌官祿
亥田宅
本命
資訊

資料結構對應

12 地支 = size-12 的環狀陣列 (Circular Array)

安命宮 ≡ 模數定址

const branches = [
  "子","丑","寅","卯","辰","巳",
  "午","未","申","酉","戌","亥"
];

// 2. 命宮演算法 (農曆月、農曆時)
// 寅月是起點(index=2),逆數時辰
function getMainPalace(
  lunarMonth: number,
  hourIndex: number
): number {
  return (12 + lunarMonth + 2
            - hourIndex + 1) % 12;
}

// 3. 這就是 Modulo 定址!
// 無論生月/時怎麼加減,
// % 12 確保結果永遠落在 [0,11]

陣列索引 vs 宮位名稱

宮名由命宮位置决定,偏移量查表即可:

const PALACES = [
  "命宮","兄弟","夫妻",
  "子女","財帛","疾厄",
  "遷移","交友","官祿",
  "田宅","福德","父母"
];

function getPalaceName(
  branchIdx: number,
  mainIdx: number
): string {
  return PALACES[
    (12 - mainIdx + branchIdx) % 12
  ];
}

關鍵洞察

→

命盤本質是一個 size=12 的環狀陣列,每個元素(宮位)存放一組星曜(物件)

→

安星訣 = Modulo Arithmetic(同餘運算),確保索引不溢出

→

2D 網格只是 1D 環狀陣列的 視圖(View),底層資料一致

→

天干地支 60 甲子 = 10 × 12 的最小公倍數哈希空間