TuViChinhXac.comTử Vi Chính Xác
Quy tắc an sao từng bước

Lập trình an sao tử vi: đánh số cung từ 0 đến 11, phép chia dư 12 và mã giả từng bước

Hướng dẫn cho người viết công cụ lá số: biểu diễn mười hai cung bằng số, công thức an từng nhóm sao theo phép chia dư 12, cấu hình dị bản và bộ ca kiểm.

Silhouette of a programmer in a dim Ha Noi room at night, seen from behind, laptop screen glowing blank white, notebook with a hand drawn empty grid on the desk

Muốn viết một công cụ lập lá số tử vi đúng, cách gọn nhất là đánh số mười hai cung từ 0 (Tý) đến 11 (Hợi), đánh số giờ và can chi tương tự, rồi viết mọi quy tắc an sao thành phép cộng trừ lấy dư cho 12. Hầu hết các quy tắc trong sách đều là "khởi ở ô X, đếm thuận hoặc nghịch N bước", nên chỉ cần vài dòng công thức; những bảng không suy ra được như Lộc Tồn hay Tứ Hoá thì để dưới dạng bảng tra có cấu hình dị bản.

Bài dành cho người lập trình, người làm bảng tính, hoặc người học muốn hiểu quy tắc theo lối số học. Mọi công thức trong bài đã được cài thử và chạy qua toàn bộ tổ hợp đầu vào để kiểm các bất biến. Bài không có khối mã dài, chỉ có mã giả bằng chữ; bài cũng không bàn phần đổi dương lịch sang âm lịch, vốn là một mô đun riêng cần nguồn lịch đáng tin.

Biểu diễn dữ liệu: mọi thứ thành số

Đánh số chi Tý là 0, Sửu 1, Dần 2, Mão 3, Thìn 4, Tỵ 5, Ngọ 6, Mùi 7, Thân 8, Dậu 9, Tuất 10, Hợi 11. Một ô trên lá số chính là một chi, nên vị trí của mọi sao là một số từ 0 tới 11. Chiều thuận là cộng, chiều nghịch là trừ. Can đánh số Giáp 0 tới Quý 9; can dương là các số chẵn. Giờ sinh đánh số như chi, giờ Tý là 0. Tháng sinh âm lịch giữ từ 1 đến 12, ngày từ 1 đến 30.

Đầu vào của hàm an sao nên là dữ liệu âm lịch đã chuẩn hoá: can năm, chi năm, tháng, ngày, giờ, giới, cộng với một bộ cấu hình quy ước. Tách bạch như vậy giúp kiểm từng phần: lỗi đổi lịch nằm ở mô đun lịch, lỗi an sao nằm ở mô đun an sao. Rất nhiều sai lệch giữa các công cụ đến từ phần lịch chứ không từ phần an sao.

Một bẫy kỹ thuật cần biết ngay: trong nhiều ngôn ngữ lập trình, phép lấy dư với số âm trả về số âm. Trừ 3 lấy dư cho 12 có thể ra trừ 3 thay vì 9. Hãy viết một hàm chuẩn hoá vị trí luôn trả về số từ 0 tới 11, và dùng nó cho mọi phép tính vị trí; đừng rải phép lấy dư trực tiếp khắp nơi.

Bảng công thức an sao

Ký hiệu: t là tháng (1–12), g là giờ (0–11), n là ngày (1–30), c là can năm (0–9), y là chi năm (0–11). Mọi kết quả chuẩn hoá về 0–11.

MụcCông thứcKiểm bằng ca biết trước
Cung Mệnh / cung Thânt + 1 − g / t + 1 + gTháng 1 giờ Tý: cả hai ở 2 (Dần)
Cung thứ k tính từ MệnhMệnh − k (k = 0 Mệnh, 1 Huynh Đệ … 11 Phụ Mẫu)Thiên Di (k = 6) luôn đối Mệnh
Can của ô Dần / ô x2c + 2 lấy dư 10 / can Dần + ((x − 2) chuẩn hoá) lấy dư 10Năm Giáp: Dần là Bính
Tử Viq = phần nguyên trên của n chia cục; d = q × cục − n; vị trí = 2 + (q − 1) + (d nếu d chẵn, −d nếu d lẻ)Hoả lục cục ngày 1: 9 (Dậu)
Thiên Phủ4 − Tử ViTử Vi Ngọ (6): Thiên Phủ Tuất (10)
Văn Xương / Văn Khúc10 − g / 4 + gGiờ Mão: cả hai ở 7 (Mùi)
Địa Không / Địa Kiếp11 − g / 11 + gGiờ Tý: cả hai ở 11 (Hợi)
Tả Phù / Hữu Bật3 + t / 11 − tTháng 4: cả hai ở 7 (Mùi)
Thiên Hình / Thiên Riêu8 + t / tTháng 1: Dậu và Sửu
Hồng Loan / Thiên Hỷ3 − y / 9 − yTuổi Tý: Mão và Dậu
Long Trì / Phượng Các4 + y / 10 − yTuổi Tý: Thìn và Tuất
Thiên Khốc / Thiên Hư6 − y / 6 + yTuổi Tý: cả hai ở Ngọ
TuầnG = y − c; Tuần ở G − 2 và G − 1Bính Dần: G = 0, Tuần ở 10 và 11

Chòm chính tinh viết thành danh sách độ lệch: chòm Tử Vi trừ 0, 1, 3, 4, 5, 8 lần lượt cho Tử Vi, Thiên Cơ, Thái Dương, Vũ Khúc, Thiên Đồng, Liêm Trinh; chòm Thiên Phủ cộng 0, 1, 2, 3, 4, 5, 6, 10 cho Thiên Phủ, Thái Âm, Tham Lang, Cự Môn, Thiên Tướng, Thiên Lương, Thất Sát, Phá Quân. Lộc Tồn, Khôi Việt, Tứ Hoá, Triệt, Thiên Mã, Đào Hoa, Hoa Cái, Cô Quả, điểm khởi Hoả Linh và Tràng Sinh nên để dạng bảng tra theo can, theo chi hoặc theo cục.

Mã giả: thứ tự gọi hàm

Thứ tự dưới đây tôn trọng chuỗi phụ thuộc. Mỗi bước nhận kết quả các bước trước, không tự tính lại.

  1. Chuẩn hoá đầu vào âm lịch và đọc bộ cấu hình quy ước (tháng nhuận, giờ Tý, Tứ Hoá, Khôi Việt, Hoả Linh).
  2. Tính cờ chiều: thuận nếu (can chẵn và nam) hoặc (can lẻ và nữ), ngược lại là nghịch. Gán dấu cộng hoặc trừ cho các vòng.
  3. Tính Mệnh, Thân, rồi gán tên mười hai cung.
  4. Tính can ô Mệnh, nạp âm, số cục.
  5. Tính Tử Vi, Thiên Phủ, rồi mười bốn chính tinh bằng danh sách độ lệch.
  6. Tra Lộc Tồn theo can; Kình Dương bằng Lộc Tồn cộng 1, Đà La bằng Lộc Tồn trừ 1; vòng Bác Sĩ từ Lộc Tồn theo cờ chiều.
  7. Tra Khôi Việt và Tứ Hoá theo bảng đã cấu hình; gắn chữ hoá vào vị trí của sao gốc đã an.
  8. Tính nhóm theo giờ, theo tháng, theo chi năm bằng công thức; Hoả Linh theo cấu hình chiều đếm.
  9. Tính Tuần, Triệt; vòng Tràng Sinh theo cục và cờ chiều; vòng Thái Tuế từ chi năm đi thuận.
  10. Đánh số đại vận: ô thứ k theo cờ chiều tính từ Mệnh mang số cục cộng 10 nhân k.
  11. Ghi kèm vào kết quả bộ quy ước đã dùng, để lá số tự mô tả được nó theo bản nào.

Cấu hình dị bản thay vì chọn cứng

Tứ Hoá. Tách thành bảng mười dòng, mỗi dòng bốn sao, có các biến thể cho can Mậu, can Canh, can Nhâm. Người dùng chọn biến thể, mặc định ghi rõ là bản nào.

Thiên Khôi, Thiên Việt. Các can khác được các sách ghi giống nhau; can Canh và can Tân để dạng tuỳ chọn.

Hoả Tinh, Linh Tinh. Điểm khởi theo nhóm tam hợp cố định; chiều đếm là một tuỳ chọn: cùng thuận, hoặc theo âm dương nam nữ.

Tháng nhuận và giờ Tý. Đây là quy ước về dữ liệu đầu vào, nên đặt ở mô đun chuẩn hoá trước khi vào hàm an sao. Kết quả cần ghi rõ ngày, tháng âm lịch thực sự đã dùng.

Không chọn hộ người dùng mà không nói. Lỗi phổ biến của công cụ là chọn cứng một dị bản và không hiển thị. Người dùng so hai công cụ thấy khác mà không biết vì sao. Một dòng ghi chú "Tứ Hoá theo bản …, Hoả Linh theo …" giải quyết phần lớn thắc mắc.

Bộ ca kiểm: bất biến và đáp án tay

Kiểm thử công cụ lá số nên có hai lớp. Lớp thứ nhất là các bất biến, kiểm được trên mọi đầu vào mà không cần đáp án: Thân thuộc sáu cung Mệnh, Phúc Đức, Quan Lộc, Thiên Di, Tài Bạch, Phu Thê; Tử Vi cộng Thiên Phủ chia 12 dư 4; Thất Sát cách Thiên Phủ sáu ô; Phá Quân cách Thiên Tướng sáu ô; đủ mười bốn chính tinh, mỗi sao một lần; Địa Không đứng ngay sau Văn Xương; Lộc Tồn không ở Thìn, Tuất, Sửu, Mùi; số đại vận ở ô Mệnh bằng số cục.

Toàn bộ không gian đầu vào chỉ có sáu mươi năm can chi nhân mười hai tháng nhân ba mươi ngày nhân mười hai giờ nhân hai giới, tức 518.400 tổ hợp. Con số này đủ nhỏ để chạy hết trong vài chục giây trên máy tính thường. Khi viết bài này, bộ công thức trong bảng đã được chạy qua đủ 518.400 tổ hợp và không vi phạm bất biến nào. Lưu ý rằng bất biến chỉ bắt được lỗi cài đặt làm vỡ cấu trúc; nó không bắt được việc cài sai một quy tắc theo cách vẫn giữ cấu trúc.

Vì thế cần lớp thứ hai: một bộ lá số đáp án tính tay, mỗi lá số chọn để chạm một ca khó. Ví dụ giả định: nam Giáp Tý tháng Giêng mùng 1 giờ Tý phải cho Mệnh Thân đồng cung ở Dần, Hoả lục cục, Tử Vi ở Dậu; nữ Tân Sửu tháng 9 mùng 4 giờ Mão phải cho Kim tứ cục, Tử Phủ đồng cung ở Dần, Tuần Triệt cùng ở Thìn Tỵ; nữ Canh Ngọ tháng 11 ngày 23 giờ Tỵ phải cho Mộc tam cục, Tử Phủ ở Thân, vòng Bác Sĩ đi nghịch. Thêm ca theo từng dị bản để bảo đảm tuỳ chọn thật sự đổi kết quả.

Giới hạn: công cụ đúng không có nghĩa là lời đoán đúng

Một công cụ an sao đúng chỉ bảo đảm một điều: từ dữ liệu đầu vào và bộ quy ước đã chọn, tờ lá số là kết quả nhất quán và tái lập được. Đó là chất lượng phần mềm, có thể kiểm thử. Còn việc phần luận giải gắn lên tờ lá số có giá trị dự đoán hay không là câu hỏi khác, đến nay chưa có bằng chứng kiểm chứng được.

Người viết công cụ nên trình bày điều này rõ ràng trên giao diện: hiển thị dữ liệu đầu vào đã dùng, quy ước đã chọn, và tránh câu chữ hứa hẹn kiểu "chính xác tuyệt đối". Nếu bạn muốn đối chiếu với một nguồn có sẵn, có thể lập lá số trên AI Huyền Học rồi dùng chính bộ bất biến ở trên để kiểm; chỗ nào khác nhau, hãy tìm ô khác đầu tiên theo thứ tự phụ thuộc trước khi kết luận bên nào sai.

Câu hỏi thường gặp

Có nên lưu sẵn bảng an Tử Vi 150 ô thay vì tính?

Đều được. Bảng tra nhanh và dễ đọc; công thức gọn và tự kiểm được. Cách an toàn là dùng công thức để sinh bảng một lần, so với bảng in trong sách, rồi lưu bảng đã kiểm. Như vậy bắt được cả lỗi in lẫn lỗi cài.

Vì sao chọn Tý là 0 mà không phải Dần là 0?

Chọn Tý là 0 khớp với thứ tự chi quen thuộc và làm công thức Mệnh, Thân gọn. Chọn Dần là 0 cũng được, miễn nhất quán; khi đó mọi hằng số khởi trong công thức phải dịch theo.

Phần đổi lịch có nên tự viết không?

Chỉ nên tự viết khi bạn hiểu rõ thuật toán điểm sóc, trung khí và múi giờ lịch Việt. Nếu dùng thư viện có sẵn, hãy kiểm với vài mốc đã biết chắc, nhất là các năm lịch Việt lệch lịch Trung Quốc, trước khi tin kết quả.

Làm sao kiểm phần Tứ Hoá đã cài đúng?

Kiểm từng dòng can với bảng đã chọn, rồi kiểm bất biến: mỗi can hoá đúng bốn sao khác nhau và chữ hoá luôn gắn vào ô có sao gốc. Thêm ca kiểm cho can Mậu, Canh, Nhâm với từng biến thể.

Có cần xử lý ngày 30 của tháng thiếu không?

Có. Hàm chuẩn hoá đầu vào nên báo lỗi khi ngày âm lịch không tồn tại trong tháng đó, thay vì im lặng tính tiếp. Ngày không tồn tại thường là dấu hiệu đổi lịch sai.

Có nên hiển thị "độ chính xác" của lá số không?

Không nên gán con số độ chính xác cho lời đoán. Điều có thể hiển thị trung thực là độ chắc của dữ liệu đầu vào, ví dụ giờ sinh lấy từ giấy chứng sinh hay ước lượng, và quy ước đã dùng ở các điểm có dị bản.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926.183.183