{"slug":"thuat-toan-tinh-can-chi-tang-can-bat-tu-lap-trinh","title":"Thuật Toán Tính Can Chi Và Tàng Can Trong Bát Tự — Góc Nhìn Lập Trình","summary":"Phân tích thuật toán tính 8 chữ Can Chi trong Bát Tự: Lập Xuân vs Tết, Tiết Khí, Julian Day, Ngũ Hổ Độn, Ngũ Thử Độn, Tàng Can lookup table, và Thập Thần matrix.","excerpt":"Phân tích thuật toán tính 8 chữ Can Chi trong Bát Tự: Lập Xuân vs Tết, Tiết Khí, Julian Day, Ngũ Hổ Độn, Ngũ Thử Độn, Tàng Can lookup table, và Thập Thần matrix.","markdown":"# Thuật Toán Tính Can Chi Và Tàng Can Trong Bát Tự\nChuyên mục: Lập trình × Huyền học\n\nTính toán Bát Tự đòi hỏi nhiều thuật toán kết hợp: từ lịch thiên văn, modular arithmetic đến lookup table. Bài viết phân tích chi tiết cách lập trình tính 8 chữ Can Chi.\n\n## 1. Trụ Năm — Lập Xuân Là Mốc\nSai lầm phổ biến nhất: dùng Tết Nguyên Đán làm mốc chuyển năm Can Chi. Thực tế, năm Can Chi bắt đầu từ Lập Xuân (立春), thường rơi vào 3-5/2 dương lịch.\n\nfunction yearPillar(solarDate) {\nconst lichXuan = findSolarTerm(315, solarDate.year); // 315° = Lập Xuân\nconst year = solarDate < lichXuan\n? solarDate.year - 1\n: solarDate.year;\nreturn {\nstem: STEMS[(year - 4) % 10],    // Giáp Tý = năm 4 CN\nbranch: BRANCHES[(year - 4) % 12]\n};\n}\n\n## 2. Trụ Tháng — Tiết Khí Quyết Định\nTháng Can Chi không theo tháng âm lịch mà theo Tiết khí (節氣). Mỗi tháng bắt đầu từ một Tiết (không phải Trung khí):\n\nTháng Dần (寅): Lập Xuân → Kinh Trập\nTháng Mão (卯): Kinh Trập → Thanh Minh\n... và tiếp tục theo 24 Tiết Khí\n\nThiên Can của tháng phụ thuộc vào Thiên Can năm theo quy luật Ngũ Hổ Độn (五虎遁):\n\n// Ngũ Hổ Độn: Can năm → Can tháng Giêng (Dần)\nconst NGU_HO_DON = {\n'甲': '丙', '己': '丙',  // Giáp/Kỷ → Bính Dần\n'乙': '戊', '庚': '戊',  // Ất/Canh → Mậu Dần\n'丙': '庚', '辛': '庚',  // Bính/Tân → Canh Dần\n'丁': '壬', '壬': '壬',  // Đinh/Nhâm → Nhâm Dần\n'戊': '甲', '癸': '甲',  // Mậu/Quý → Giáp Dần\n};\n\n## 3. Trụ Ngày — Bảng Tra Julian Day\nCan Chi ngày không có quy luật toán học đơn giản vì chu kỳ 60 ngày không chia hết cho năm. Cách tính phổ biến nhất dùng Julian Day Number:\n\nfunction dayPillar(year, month, day) {\nconst jdn = julianDayNumber(year, month, day);\nconst idx = (jdn + 9) % 60; // offset cho Giáp Tý\nreturn {\nstem: STEMS[idx % 10],\nbranch: BRANCHES[idx % 12]\n};\n}\n\n## 4. Trụ Giờ — Ngũ Thử Độn\nTương tự Ngũ Hổ Độn, Thiên Can của giờ phụ thuộc vào Can ngày theo quy luật Ngũ Thử Độn (五鼠遁). Mỗi ngày chia thành 12 thời thần (2 giờ mỗi thời thần), bắt đầu từ giờ Tý (23:00-01:00).\n\n## 5. Tàng Can — Lookup Table\nTàng Can là bảng tra cố định, mỗi Địa Chi chứa 1-3 Thiên Can ẩn với tỷ lệ ảnh hưởng:\n\nconst TANG_CAN = {\n'子': [['癸', 100]],\n'丑': [['己', 60], ['癸', 30], ['辛', 10]],\n'寅': [['甲', 60], ['丙', 30], ['戊', 10]],\n'卯': [['乙', 100]],\n'辰': [['戊', 60], ['乙', 30], ['癸', 10]],\n'巳': [['丙', 60], ['庚', 30], ['戊', 10]],\n'午': [['丁', 70], ['己', 30]],\n'未': [['己', 60], ['丁', 30], ['乙', 10]],\n'申': [['庚', 60], ['壬', 30], ['戊', 10]],\n'酉': [['辛', 100]],\n'戌': [['戊', 60], ['辛', 30], ['丁', 10]],\n'亥': [['壬', 70], ['甲', 30]],\n};\n\n## 6. Thập Thần — Relationship Matrix\nThập Thần là ma trận quan hệ 10×5 giữa Nhật Chủ và các Can khác, xác định bằng: (a) cùng/khác hành, (b) sinh/khắc, (c) cùng/khác âm dương. Toàn bộ logic chỉ cần 1 hàm với 3 điều kiện if-else.\n","html":"<p>Chuyên mục: Lập trình × Huyền học</p>\n<p>Tính toán Bát Tự đòi hỏi nhiều thuật toán kết hợp: từ lịch thiên văn, modular arithmetic đến lookup table. Bài viết phân tích chi tiết cách lập trình tính 8 chữ Can Chi.</p>\n<h2>1. Trụ Năm — Lập Xuân Là Mốc</h2>\n<p>Sai lầm phổ biến nhất: dùng Tết Nguyên Đán làm mốc chuyển năm Can Chi. Thực tế, năm Can Chi bắt đầu từ Lập Xuân (立春), thường rơi vào 3-5/2 dương lịch.</p>\n<pre><code>function yearPillar(solarDate) {\n  const lichXuan = findSolarTerm(315, solarDate.year); // 315° = Lập Xuân\n  const year = solarDate &lt; lichXuan \n    ? solarDate.year - 1 \n    : solarDate.year;\n  return {\n    stem: STEMS[(year - 4) % 10],    // Giáp Tý = năm 4 CN\n    branch: BRANCHES[(year - 4) % 12]\n  };</code></pre>\n<p>}</p>\n<h2>2. Trụ Tháng — Tiết Khí Quyết Định</h2>\n<p>Tháng Can Chi không theo tháng âm lịch mà theo Tiết khí (節氣). Mỗi tháng bắt đầu từ một Tiết (không phải Trung khí):</p>\n<ul>\n<li>Tháng Dần (寅): Lập Xuân → Kinh Trập</li>\n<li>Tháng Mão (卯): Kinh Trập → Thanh Minh</li>\n<li>... và tiếp tục theo 24 Tiết Khí</li>\n</ul>\n<p>Thiên Can của tháng phụ thuộc vào Thiên Can năm theo quy luật Ngũ Hổ Độn (五虎遁):</p>\n<pre><code>// Ngũ Hổ Độn: Can năm → Can tháng Giêng (Dần)\nconst NGU_HO_DON = {\n  &#x27;甲&#x27;: &#x27;丙&#x27;, &#x27;己&#x27;: &#x27;丙&#x27;,  // Giáp/Kỷ → Bính Dần\n  &#x27;乙&#x27;: &#x27;戊&#x27;, &#x27;庚&#x27;: &#x27;戊&#x27;,  // Ất/Canh → Mậu Dần  \n  &#x27;丙&#x27;: &#x27;庚&#x27;, &#x27;辛&#x27;: &#x27;庚&#x27;,  // Bính/Tân → Canh Dần\n  &#x27;丁&#x27;: &#x27;壬&#x27;, &#x27;壬&#x27;: &#x27;壬&#x27;,  // Đinh/Nhâm → Nhâm Dần\n  &#x27;戊&#x27;: &#x27;甲&#x27;, &#x27;癸&#x27;: &#x27;甲&#x27;,  // Mậu/Quý → Giáp Dần</code></pre>\n<p>};</p>\n<h2>3. Trụ Ngày — Bảng Tra Julian Day</h2>\n<p>Can Chi ngày không có quy luật toán học đơn giản vì chu kỳ 60 ngày không chia hết cho năm. Cách tính phổ biến nhất dùng Julian Day Number:</p>\n<pre><code>function dayPillar(year, month, day) {\n  const jdn = julianDayNumber(year, month, day);\n  const idx = (jdn + 9) % 60; // offset cho Giáp Tý\n  return {\n    stem: STEMS[idx % 10],\n    branch: BRANCHES[idx % 12]\n  };</code></pre>\n<p>}</p>\n<h2>4. Trụ Giờ — Ngũ Thử Độn</h2>\n<p>Tương tự Ngũ Hổ Độn, Thiên Can của giờ phụ thuộc vào Can ngày theo quy luật Ngũ Thử Độn (五鼠遁). Mỗi ngày chia thành 12 thời thần (2 giờ mỗi thời thần), bắt đầu từ giờ Tý (23:00-01:00).</p>\n<h2>5. Tàng Can — Lookup Table</h2>\n<p>Tàng Can là bảng tra cố định, mỗi Địa Chi chứa 1-3 Thiên Can ẩn với tỷ lệ ảnh hưởng:</p>\n<pre><code>const TANG_CAN = {\n  &#x27;子&#x27;: [[&#x27;癸&#x27;, 100]],\n  &#x27;丑&#x27;: [[&#x27;己&#x27;, 60], [&#x27;癸&#x27;, 30], [&#x27;辛&#x27;, 10]],\n  &#x27;寅&#x27;: [[&#x27;甲&#x27;, 60], [&#x27;丙&#x27;, 30], [&#x27;戊&#x27;, 10]],\n  &#x27;卯&#x27;: [[&#x27;乙&#x27;, 100]],\n  &#x27;辰&#x27;: [[&#x27;戊&#x27;, 60], [&#x27;乙&#x27;, 30], [&#x27;癸&#x27;, 10]],\n  &#x27;巳&#x27;: [[&#x27;丙&#x27;, 60], [&#x27;庚&#x27;, 30], [&#x27;戊&#x27;, 10]],\n  &#x27;午&#x27;: [[&#x27;丁&#x27;, 70], [&#x27;己&#x27;, 30]],\n  &#x27;未&#x27;: [[&#x27;己&#x27;, 60], [&#x27;丁&#x27;, 30], [&#x27;乙&#x27;, 10]],\n  &#x27;申&#x27;: [[&#x27;庚&#x27;, 60], [&#x27;壬&#x27;, 30], [&#x27;戊&#x27;, 10]],\n  &#x27;酉&#x27;: [[&#x27;辛&#x27;, 100]],\n  &#x27;戌&#x27;: [[&#x27;戊&#x27;, 60], [&#x27;辛&#x27;, 30], [&#x27;丁&#x27;, 10]],\n  &#x27;亥&#x27;: [[&#x27;壬&#x27;, 70], [&#x27;甲&#x27;, 30]],</code></pre>\n<p>};</p>\n<h2>6. Thập Thần — Relationship Matrix</h2>\n<p>Thập Thần là ma trận quan hệ 10×5 giữa Nhật Chủ và các Can khác, xác định bằng: (a) cùng/khác hành, (b) sinh/khắc, (c) cùng/khác âm dương. Toàn bộ logic chỉ cần 1 hàm với 3 điều kiện if-else.</p>","tags":["Bát Tự","Lập trình","Thuật toán"],"author":"System Legacy","publishedAt":"2026-04-04T07:22:29.417Z","updatedAt":"2026-07-17T02:35:24.987Z","published_at":"2026-04-04T07:22:29.417Z","updated_at":"2026-07-17T02:35:24.987Z","view_count":102,"canonical":"https://wiki.quizzman.com/wiki/thuat-toan-tinh-can-chi-tang-can-bat-tu-lap-trinh","url":"https://wiki.quizzman.com/wiki/thuat-toan-tinh-can-chi-tang-can-bat-tu-lap-trinh","markdownUrl":"https://wiki.quizzman.com/api/articles/thuat-toan-tinh-can-chi-tang-can-bat-tu-lap-trinh.md","apiUrl":"https://wiki.quizzman.com/api/articles/thuat-toan-tinh-can-chi-tang-can-bat-tu-lap-trinh"}