Lập trình Lý số

Trao đổi về các lĩnh vực khoa học và đời sống
Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Kính thưa các bác, các bạn yêu thích lý số và lại thích lập trình máy tính!

Ứng dụng CNTT vào việc nghiên cứu các môn lý số là điều nên làm vì sẽ giúp các bác nghiên cứu thuận lợi hơn, nhanh hơn. Nay Hoàng lập topic này để chia sẻ các ý tưởng, giải thuật hay sản phẩm phục CNTT phục vụ cho lý số.

Trân trọng!
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Xin được khởi điểm với khoa Tử vi - một môn khá thân quen với nhiều người yêu thích huyền học.

Giả sử ta quy định các hằng như sau:

/// <summary>
/// Thien CAN
/// </summary>
public enum CAN { Giap, At, Binh, Dinh, Mau, Ky, Canh, Tan, Nham, Quy };
/// <summary>
/// Dia CHI
/// </summary>
public enum CHI { Ty, Suu, Dan, Mao, Thin, Ti, Ngo, Mui, Than, Dau, Tuat, Hoi };
/// <summary>
/// So CUC trong khoa Tu vi
/// </summary>
public enum CUC { ThuyNhiCuc = 2, MocTamCuc, KimTuCuc, ThoNguCuc, HoaLucCuc };

Ngoài ra còn một số thống nhất khác xin quy định sau.

Giải thuật định số CỤC được thể hiện qua phương thức sau:

/// <summary>
/// Tinh so CUC
/// </summary>
/// <param name="CanNamSinh"></param>
/// <param name="ThangSinh"></param>
/// <param name="ChiGioSinh"></param>
/// <returns></returns>
public CUC TinhSoCuc(int CanNamSinh, int ThangSinh, int ChiGioSinh)
{
int ChiCungMenh = 0, CanCungMenh = 0, _CUC = 0;

// Xac dinh CAN, CHI cua cung Menh
ChiCungMenh = (13 + ThangSinh - ChiGioSinh) % 12;
CanCungMenh = (ChiCungMenh > 2) ? (((CanNamSinh + 1) * 2) % 10 + ChiCungMenh - 2) : (((CanNamSinh + 1) * 2) % 10 + ChiCungMenh + 10);

// Tinh CUC
_CUC = ((ChiCungMenh % 2) == 0) ? ((((CanCungMenh * 2 + 1) % 10) + ((ChiCungMenh * 2 + 1) % 12)) % 5) : ((((CanCungMenh * 2 - 1) % 10) + ((ChiCungMenh * 2 - 1) % 12)) % 5);
switch (_CUC)
{
case 0:
return CUC.HoaLucCuc;
case 1:
return CUC.ThuyNhiCuc;
case 2:
return CUC.KimTuCuc;
case 3:
return CUC.MocTamCuc;
case 4:
default:
return CUC.ThoNguCuc;
}
}


Thông tin vào là Can năm sinh (từ 0 -> 9 tương ứng Giáp -> Quý), tháng sinh (1 - 12) và Chi giờ sinh (từ 0 -> 11 tương ứng Tý -> Hợi).

Phương thức trả lại số CỤC.
Được cảm ơn bởi: apollo, LamduongSathietBut, tuhaigiaikhong
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Mấy hôm nay nóng trong người, vui chơi và hoạt động ngoài trời nhiều quá nên lập topic hơi dở, chả có đầu đuôi & giải thích gì, mong các bác thứ lỗi :) . Xin được bắt đầu lại từ đầu.

Để các bài này "thông" được, xin có một số quy định giá trị hằng số như sau:
- Âm / Dương: { Dương = 0, Âm = 1 }. Nếu kết quả tính toán về Âm / Dương cho ta là 0 thì đó là Dương, là 1 thì đó là âm.

- Địa chi: { Tý = 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 }. Nếu kết quả tính toán về địa chi cho ta là 6 thì tương ứng là Ngọ.

- Ngũ hành: { Mộc = 0, Hỏa = 1, Thổ = 2, Kim = 3, Thủy = 4 } (Thứ tự được đánh theo chiều sinh)

- Thiên can: { Giáp = 0, Ất = 1, Bính = 2, Đinh = 3, Mậu = 4, Kỷ = 5, Canh = 6, Tân = 7, Nhâm = 8, Quý = 9 }. Nếu kết quả tính toán về thiên can cho ta là 4 thì tương ứng là Mậu.

- Hoa giáp: { Giáp Tý = 0, Ất Sửu = 1, Bính Dần = 3, ..., Nhâm Tuất = 58, Quý Hợi = 59 }.

- Nạp âm: { Hải Trung Kim = 0, Lô Trung Hỏa = 1, Đại Lâm Mộc = 2, ..., Đại Hải Thủy = 29 }.

- Số cục: {Thủy nhị cục = 2, Mộc tam cục = 3, Kim tứ cục = 4, Thổ ngũ cục = 5, Hỏa lục cục = 6}

- Tháng sinh: { 1, 2, 3, ..., 12 }
- Ngày sinh: { 1, 2, 3, ..., 30 }
Trên đây là một vài quy định hằng số để mong các bác thống nhất cách tính toán. Còn một vài quy định hằng khác, Hoàng xin đề cập sau.

Giờ có thể bắt đầu, dự kiến của Hoàng sẽ bắt đầu với thuật an sao của Khoa tử vi đẩu số, sau đó đến dịch học và rồi khoa Tử bình. Các bác khác nếu có vấn đề hay thì xin chia sẻ ngay nhé, không sợ làm gián đoạn topic đâu ạ.

Kính!
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Có mấy thứ đóng góp :D Dân trong nghề nhìn là biết chắc không cần giới thiệu :D

Về kiến trúc phần mềm tớ đang biết gồm các object cơ bản: clsAmDuong,clsHanh,clsChi,clsCan,clsCanChi, bất kì một sao nào đều kế thừa thuộc tính của mấy đống tượng này.
Xây dựng interface ISao, các sao cũng kết thừa từ ISao này.
Còn dữ liệu hầu như tất cả tớ dùng bảng tra để đạt tốc độ cao nhất.

Mã lệnh: Chọn tất cả

    public static readonly string[] arrayNguHanhNapAm =  {  "Hải Trung Kim", "Lư Trung Hỏa", "Đại Lâm Mộc",
												    "Lộ Bàng Thổ", "Kiếm Phong Kim","Sơn Đầu Hỏa",
												    "Giáng Hạ Thủy","Thành Đầu Thổ","Bạch Lạp Kim",
												    "Dương Liễu Mộc","Tuyền Trung Thủy","Ốc Thượng Thổ",
												    "Tích Lịch Hỏa","Tùng Bách Mộc","Trường Lưu Thủy",
												    "Sa Trung Kim","Sơn Hạ Hỏa","Bình Địa Mộc",
												    "Bích Thượng Thổ","Kim Bạc Kim","Phúc Đăng Hỏa",
												    "Thiên Hà Thủy","Đại Dịch Thổ","Thoa Xuyến Kim",
												    "Tang Đố Mộc","Đại Khê Thủy","Sa Trung Thổ",
												    "Thiên Thượng Hỏa","Thạch Lựu Mộc","Đại Hải Thủy"};

	   private static int[,] arrayLacThuHoaGiap = {{ 0, -1, 25, -1, 20, -1, 15, -1, 10, -1,  5, -1},
										  {-1,  0, -1, 25, -1, 20, -1, 15, -1, 10, -1, 5},
										  {6,  -1,  1, -1, 26, -1, 21, -1, 16, -1, 11, -1},
										  {-1,  6, -1,  1, -1, 26, -1, 21, -1, 16, -1, 11},
										  {12, -1,  7, -1,  2, -1, 27, -1, 22, -1, 17, -1},
										  {-1, 12, -1,  7, -1,  2, -1, 27, -1, 22, -1, 17},
										  {18, -1, 13, -1,  8, -1,  3, -1, 28, -1, 23, -1},
										  {-1, 18, -1, 13, -1,  8, -1,  3, -1, 28, -1, 23},
										  {24, -1, 19, -1, 14, -1,  9, -1,  4, -1, 29, -1},
										  {-1, 24, -1, 19, -1, 14, -1,  9, -1,  4, -1, 29}};


	   /// <summary>
	   /// Trả về bảng hoa giáp
	   /// </summary>
	   /// <param name="CanChi"></param>
	   /// <returns></returns>
	   public static string LayHoaGiap(clsCanChi CanChi)
	   {
		  return arrayNguHanhNapAm[arrayLacThuHoaGiap[CanChi.ThienCan.ToByte(), CanChi.DiaChi.ToByte()]];
	   }


	   /// <summary>
	   /// Trả về ID của ID của nạp âm theo can chi
	   /// </summary>
	   /// <param name="CanChi"></param>
	   /// <returns></returns>
	   public static int LayIDHoaGiap(clsCanChi CanChi)
	   {
		  return arrayLacThuHoaGiap[CanChi.ThienCan.ToByte(), CanChi.DiaChi.ToByte()];
	   }

Được cảm ơn bởi: phdung08
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Lại show thêm tí hàng :D

Mã lệnh: Chọn tất cả

   //Bảng các sao chủ mệnh tùy thuộc chi năm sinh
        public static readonly string[] arraySaoChuMenh = { "Tham Lang", "Cự Môn", "Lộc Tồn", "Văn Khúc", "Liêm Trinh", "Vũ Khúc", 
                                                  "Phá Quân", "Vũ Khúc", "Liêm Trinh", "Văn Khúc", "Lộc Tồn", "Cự Môn" };
        //Bảng các sao chủ thân tùy thuộc chi năm sinh
        public static readonly string[] arraySaoChuThan = { "Linh Tinh", "Thiên Tướng", "Thiên Lương", "Thiên Đồng", "Văn Xương", "Thiên Cơ", 
                                                "Hỏa Tinh", "Thiên Tướng", "Thiên Lương", "Thiên Đồng", "Văn Xương", "Thiên Cơ" };

        //Bảng số cục tùy thuộc vào can năm sinh và cung an mệnh
        public static readonly byte[,] BangCuc = {{2, 2, 6, 6, 3, 3, 5, 5, 4, 4, 6, 6}, 
                                                    {6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 5, 5}, 
                                                    {5, 5, 3, 3, 2, 2, 4, 4, 6, 6, 3, 3}, 
                                                    {3, 3, 4, 4, 6, 6, 2, 2, 5, 5, 4, 4}, 
                                                    {4, 4, 2, 2, 5, 5, 6, 6, 3, 3, 2, 2}};

        //Bảng vị trí an cung mệnh tùy thuộc vào tháng sinh và giờ sinh
        public static readonly byte[,] arrayViTriMenh = {{2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3}, 
                                    {3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4}, 
                                    {4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5}, 
                                    {5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6},
                                    {6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7}, 
                                    {7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8}, 
                                    {8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9}, 
                                    {9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10}, 
                                    {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11}, 
                                    {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, 
                                    {0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}, 
                                    {1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2}};

        //Bảng vị trí an cung 8 tùy thuộc vào tháng sinh và giờ sinh
        public static readonly byte[,] arrayViTriThan = {{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1}, 
                                    {3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2}, 
                                    {4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3}, 
                                    {5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4}, 
                                    {6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5}, 
                                    {7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6}, 
                                    {8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7}, 
                                    {9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8}, 
                                    {10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, 
                                    {11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 
                                    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11},
                                    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0}};

        /// <summary>
        /// Bảng vị trí sao tử vi theo ngày sinh và số cục
        /// </summary>
        public static byte[,] arrayViTriTuVi = {{1, 4, 11, 6, 9}, {2, 1, 4, 11, 6}, {2, 2, 1, 4, 11},
                                    {3, 5, 2, 1, 4}, {3, 2, 0, 2, 1}, {4, 3, 5, 7, 2}, 
                                    {4, 6, 2, 0, 10}, {5, 3, 3, 5, 7}, {5, 4, 1, 2, 0}, 
                                    {6, 7, 6, 3, 5}, {6, 4, 3, 8, 2}, {7, 5, 4, 1, 3}, 
                                    {7, 8, 2, 6, 11}, {8, 5, 7, 3, 8}, {8, 6, 4, 4, 1}, 
                                    {9, 9, 5, 9, 6}, {9, 6, 3, 2, 3}, {10, 7, 8, 7, 4}, 
                                    {10, 10, 5, 4, 0}, {11, 7, 6, 5, 9}, {11, 8, 4, 10, 2}, 
                                    {0, 11, 9, 3, 7}, {0, 8, 6, 8, 4}, {1, 9, 7, 5, 5}, 
                                    {1, 0, 5, 6, 1}, {2, 9, 10, 11, 10}, {2, 10, 7, 4, 3}, 
                                    {3, 1, 8, 9, 8}, {3, 10, 6, 6, 5}, {4, 11, 11, 7, 6}};

        /// <summary>
        /// Bảng vị trí các chính tinh theo vị trí của Tử Vi
        /// </summary>
        public static byte[] arrayViTriThamLang = { 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7 };
        public static byte[] arrayViTriThaiAm = { 5, 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6 };
        public static byte[] arrayViTriThienCo = { 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        public static byte[] arrayViTriThienPhu = { 4, 3, 2, 1, 0, 11, 10, 9, 8, 7, 6, 5 };
        public static byte[] arrayViTriThaiDuong = { 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8 };
        public static byte[] arrayViTriVuKhuc = { 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7 };
        public static byte[] arrayViTriPhaQuan = { 2, 1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3 };
        public static byte[] arrayViTriThienDong = { 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6 };
        public static byte[] arrayViTriLiemTrinh = { 4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3 };
        public static byte[] arrayViTriThatSat = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11 };
        public static byte[] arrayViTriThienLuong = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10 };
        public static byte[] arrayViTriThienTuong = { 8, 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9 };
        public static byte[] arrayViTriCuMon = { 7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8 };
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Hehe, có cao thủ vào rồi, thanks lão ;) tôi đang code dở mấy thứ, tư tưởng code hơi khác lão 1 tí thôi :) , chủ yếu để phục vụ thống kê ấy mà :> . Tôi cũng đang nghiên cứu xem làm như lão có sợ tốn bộ nhớ ko trong việc thống kê.
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Cũng định thống kê nên tôi dùng bảng tra cho nhanh ấy mờ, bộ nhớ bé tí tẹo, toàn bộ mảng an sao của tôi chiếm 40kbyte bộ nhớ ;;)

Tử vi thì tôi code xong rồi, giờ đang làm cái lịch dùng cho tiện B-)

Hình ảnh
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

Ví dụ thía này

//Văn Xương, Văn Khúc, Thai Phụ, Phong Cáo, Địa Không, Địa Kiếp
public static byte[,] arrayViTriSaoTheoGioSinh = {{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11},
{4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3},
{6, 7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5},
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1},
{11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0},
{11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}};
//Hữu Bật, Tả Phù, Thiên Giải, Thiên Y, Thiên Riêu, Thiên Hình
public static byte[,] arrayViTriSaoTheoThangSinh = {{10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 11},
{4, 5, 6, 7, 8, 9, 10, 11, 0, 1, 2, 3},
{8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0},
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0},
{9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8},
{7, 8, 9, 10, 11, 0, 1, 2, 3, 4, 5, 6}};

thì trong phần an sao tôi chỉ cần code thía này thôi
//An các sao theo giờ sinh
MangCung[Data.arrayViTriSaoTheoGioSinh[0, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoVanXuong);
MangCung[Data.arrayViTriSaoTheoGioSinh[1, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoVanKhuc);
MangCung[Data.arrayViTriSaoTheoGioSinh[2, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoThaiPhu);
MangCung[Data.arrayViTriSaoTheoGioSinh[3, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoPhongCao);
MangCung[Data.arrayViTriSaoTheoGioSinh[4, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoDiaKhong);
MangCung[Data.arrayViTriSaoTheoGioSinh[5, ThongTin.NgaySinhAL.Hour]].ThemSao(Data.saoDiaKiep);

//An các sao theo tháng sinh
MangCung[Data.arrayViTriSaoTheoThangSinh[0, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoHuuBat);
MangCung[Data.arrayViTriSaoTheoThangSinh[1, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoTaPhu);
MangCung[Data.arrayViTriSaoTheoThangSinh[2, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoThienGiai);
MangCung[Data.arrayViTriSaoTheoThangSinh[3, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoThienY);
MangCung[Data.arrayViTriSaoTheoThangSinh[4, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoThienRieu);
MangCung[Data.arrayViTriSaoTheoThangSinh[5, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoThienHinh);
MangCung[Data.arrayViTriSaoTheoThangSinh[6, ThongTin.NgaySinhAL.Month - 1]].ThemSao(Data.saoDiaGiai);

Lập trình bảng tra còn có một cái hay là suy ngược lại, ví dụ sinh tháng 10 Hữu Bật ở Tý, khi cần suy ngược lại, Hữu Bật ở Tý thì sinh tháng mấy hơi bị ngon :D
Đầu trang

Hình đại diện của thành viên
HoangHa
Ngũ đẳng
Ngũ đẳng
Bài viết: 1002
Tham gia: 21:40, 02/01/09
Đến từ: Hải Phòng

TL: Lập trình Lý số

Gửi bài gửi bởi HoangHa »

Ah quên quên...

Tư tưởng của tôi là: về kiến trúc:

- Xây dựng đối tượng sao tử vi. Có phương thức khởi dựng là (tên sao, năm sinh, tháng sinh, ngày sinh, giờ sinh). Một vài phương thức cơ bản khác là An sao. Đối tượng sao này có một vài thuộc tính như: Loại sao, tính âm dương, ngũ hành sao, tính đắc hãm, tên sao, ý nghĩa sao, danh sách các sao có quan hệ... Đây là đối tượng cơ sở. Riêng về ý nghĩa giải đoán thì tôi để riêng ra file xml để tiên sửa đổi và dựng các luật giải đoán cho các bộ sao.

- Đối tượng lá số tử vi: được hình thành chủ yếu từ đối tượng sao tử vi.

- Những thứ như Can, chi thì tôi cho nó là hằng số (enum).

Ah ah, vừa thấy lão post bài: lão thử làm công việc: thống kê xem có bao nhiêu lá số tử vi có cách tam hóa liên châu, giờ sinh thỏa mãn thế nào, để xem lõi của lão lúc chạy nguốn bộ nhớ thế nào? tôi không có điều kiện thử đc tư tưởng của lão.
Đầu trang

phamthaihoa
Thượng khách
Thượng khách
Bài viết: 243
Tham gia: 13:42, 03/09/08

TL: Lập trình Lý số

Gửi bài gửi bởi phamthaihoa »

- Xây dựng đối tượng sao tử vi. Có phương thức khởi dựng là (tên sao, năm sinh, tháng sinh, ngày sinh, giờ sinh). Một vài phương thức cơ bản khác là An sao. Đối tượng sao này có một vài thuộc tính như: Loại sao, tính âm dương, ngũ hành sao, tính đắc hãm, tên sao, ý nghĩa sao, danh sách các sao có quan hệ... Đây là đối tượng cơ sở. Riêng về ý nghĩa giải đoán thì tôi để riêng ra file xml để tiên sửa đổi và dựng các luật giải đoán cho các bộ sao.

- Đối tượng lá số tử vi: được hình thành chủ yếu từ đối tượng sao tử vi.
Tư tưởng nhớn bình thường gặp nhau, những gì lão nêu tôi đã làm và làm y hệt.
tên sao, năm sinh, tháng sinh, ngày sinh, giờ sinh tất cả cái này tôi để trong clsInfoLaSo
clsLaSo gồm có clsInfoLaSo,clsThienBan,clsDiaBan

Còn: Loại sao, tính âm dương, ngũ hành sao, tính đắc hãm, tên sao, ý nghĩa sao, danh sách các sao có quan hệ tôi để trong ISao :D. Công việc an sao nặng nề nhất thì tôi thực hiện hoàn toàn trên bộ nhớ, chỉ khi thể hiện ra màn hình thì đối tượng ISao này sẽ query từ DB rồi thể hiện lên màn hình thôi.

tôi không dùng XML mà dùng file access để tiện khi cần thực hiện câu query, xây dựng thêm một tầng trung gian để hướng đối tượng hoàn toàn kể cả CSDL, lời luận giải của tôi được build động thành câu query vào DB. Lời luận giải sẽ được đồng bộ qua webservice với server của tôi.

Tôi chưa thử tìm xem có bao nhiêu cách tam hóa liên châu, đo chương trình của tôi thì tạo một lá số trung bình mất 29-33ms, tạo tất cả các lá số trong 1 năm giao động từ 3-4 phút. Cộng với cách lập trình suy ngược thì tìm tam hóa liên châu có lẽ mất ít hơn, tôi đang mắc phần cho người dùng tự build script để tìm cách cục như trên :D

/Quên: nhà dùng core2duo T7200 cùi bắp, chạy đơn luồng để tạo lá số, của tôi đa luồng thoải mái không bị cross-thread, sau khi tạo xong invoke về để hiển thị.
Đầu trang

Trả lời bài viết

Quay về “Cuộc sống muôn màu”