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

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

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

Uh đó, 1 năm mất 3-4p => để tính toán cho tất cả thì khoảng 3 tiếng đó là thời gian lý thuyết vì ko rõ ý lão muốn nói là tạo lá số là bao gồm cả in ra màn hình lá số hay chỉ là các tính toán trong bộ nhớ thôi. Tại mục đích của tôi ko phải để lập trình bộ an sao mà là để trợ giúp nghiên cứu tử vi và thống kê thôi :) , ví như muốn tìm những người có Mệnh Tử vi trong năm / tháng này chẳng hạn, trong một thời gian là hệ thống phải trả lời đc đầy đủ thông tin giờ sinh. Bộ an sao thì nhiều người làm rất hoàn thiện rồi ;) .

Phần chất lượng giải đoán cũng đang nghiên cứu :D tôi và lão cứ cố đi, hôm nào cố đc thì "bán ý tưởng" cho lão Cường (nếu lão "mua") kiếm mấy cốc bia :))
Đầ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 »

30ms mới chỉ làm bộ nhớ, còn hiển thì mất nhiều thời gian hơn vì khi thực hiện xong tôi mới truy xuất sang bảng khác chứa tên và thuộc tính để hiển thị.
Tôi làm phần mềm all-in-one cả an sao, quản lý lá số, luận giải và thông kê, nó không chỉ đơn thuần tử vi đâu mà còn lịch vạn niên, LVĐT, bốc dịch, tôi mới biết có ngần ấy nên chỉ code mấy môn ấy thôi. Kiển trúc dạng plugin, về sau cứ đắp dần lên :D
Được cảm ơn bởi: phdung08
Đầu trang

Hình đại diện của thành viên
phudongsoft
Ban quản lý
Ban quản lý
Bài viết: 185
Tham gia: 12:45, 03/09/08

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

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

Tham gia "nập chình" chút nhỉ :). Về phương pháp thì có rất nhiều cách, mỗi người chọn một cách theo ý riêng mình. Nếu dùng mảng thì chạy nhanh hơn là dùng công thức cho từng sao. Đối với những máy có bộ nhớ thấp như điện thoại thì dùng mảng sẽ làm tràn bộ nhớ vì thế sẽ phải dùng file data rồi quét, tốc độ có chậm hơn chút ít nhưng đảm bảo cả bộ nhớ lẫn tốc độ.

Việc đáng bàn bây giờ không phải là làm sao ra được cái lá số mà là làm sao giải được cái lá số đó. Cách mã hóa sao, mã hoa cách cục và ngữ nghĩa thông minh sẽ quyết định. Không biết HoangHa và PhamThaiHoa có ý kiến gì về việc này không.
Được cảm ơn bởi: thusuong1232002
Đầ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 »

Về việc dùng mảng nhanh hơn dùng công thức thì em cho là chỉ nhanh về mặt người viết code thôi chứ chạy lâu hơn là cái chắc, nhất là lại gặp mảng 2 chiều. Tuy thế thôi nhưng việc truy cập bộ nhớ lâu hơn thao tác cộng trừ giản đơn vì thao tác tính toán giản đơn đc thực hiện ngay trong CPU.

Em lấy đơn giản như lập trình cho vị trí Thiên Mã chẳng hạn: Thiên mã an theo tam hợp hội cục tại đất Bệnh của hành khí hợp hóa. Như vậy lão cần một mảng 12 phần tử để lưu vị trí Thiên mã. Vấn đề với mảng là lúc chạy chương trình, nó phải tổ chức bộ nhớ lớn hơn -> lâu ở đoạn này, còn bình thường chỉ đơn thuần là tính vị trí an của Thiên mã theo công thức:

(39 - 3 x ( Chi_Năm - 1 )) % 12

{Tý = 1, Sửu = 2, ...} (công thức này chỉ sửa 1 chút cho phù hợp với số dư phép chia)

Đây đều là các phép tính của số nguyên, là những lệnh đc CPU hỗ trợ luôn, đếm lại chỉ vẻn vẹn vài 3 phép toán.

Nhìn chung nên linh động, ko nên dùng cố định một cách nào, chỉ hạn chế rẽ nhánh và mảng đa chiều.

@lão Phù Đổng: em và tay Hòa có cùng tư tưởng coi sao là đối tượng. Đối tượng này có một thuộc tính là: các sao có quan hệ với nó. Để có lời giải đoán thì chỉ việc xây dựng quan hệ đối tượng và lời giải tương ứng với quan hệ này. Lời giải tương ứng với 1 quan hệ được lưu ở một tệp XML nào đó (cho tiện truy xuất hơn hệ quản trị CSDL vì nếu chạy trên mobile thì khó có hệ quản trị CSDL, chơi XML tốt hơn)
Đầ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ó thể lão Hoàng đi theo hướng viết công thức tính :D
Trước đây chương trình Tử Vi lạc việt viết bằng Java chạy trên web hoàn toàn bằng công thức, tôi lôi về máy đo thử xem thế nào, hồi đó tôi viết bằng VB, kết quả tôi nhanh hơn gần 2 lần.
C# có một cái bựa, nếu tất cả mọi thứ đều dùng class thì nó khá chậm, tôi dùng song song cả struct và class để tối ưu tốc độ.

Phiên bản 1.0 của tôi dùng XML, nhưng thấy không ngon lắm. XML chỉ hiệu quả cho CSDL < 10MB. Với đối tượng sao hay các lời luận giải thì cấu trúc các tag của nó lại làm cho file dữ liệu tương đối lớn, do nó lưu thuần text nên lúc đọc vào, bộ nhớ dùng vật con lợn luôn =)
Hiện giờ tôi dùng Access, đối với phần thực sự lớn thì SQL luôn, vì lớp trung gian của tôi không quan tâm đến CSDL là gì. Truyền từ server về tôi dùng cấu trúc data json. Tôi cũng thấy kiến trúc của mình ngon B-) (tự sướng vưỡn cao)
Đầ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 »

Lão Hòa so sánh cũng khập khiễng vì chương trình đc viết bằng hai ngôn ngữ khác nhau, cùng 1 giải thuật thì thời gian thực thi nó cũng khác nhau. Mà lão đã có đến 10Mb lời giải đc ghi trong XML rồi ah? nhiều thế :-O . Lão viết sao thì viết nhưng còn tính cả đến việc nó chạy đc tốt trên kiến trúc mobile, lôi mấy hệ CSDL vào tôi thấy cũng ko tốt. Mà chương trình của lão làm có cả trao đổi dữ liệu với server à :D ghê thế. Thế xong chưa, demo cho anh em xem còn học hỏi :)
Đầ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 »

Tôi không viết cho mobile :D, việc đó là chuyên môn của lão Cường, nền tảng của tôi dùng máy tính. Còn lão thích dùng giải thuật nào, dữ liệu thía nào thì tùy thôi :D
Còn viết phải trao đổi được với server thì tôi còn nhiều ý tưởng về sau ;))
Đầu trang

Hình đại diện của thành viên
phudongsoft
Ban quản lý
Ban quản lý
Bài viết: 185
Tham gia: 12:45, 03/09/08

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

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

Chương trình tối ưu hay không tối ưu thì 1 phút vẫn ra được cái lá số :D. Quan trọng là làm thế nào sau 5p có được lời giải lá số, thế mới ngon ;)
Đầ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 »

Em chả dại đi vào cái mớ bòng bong ấy ;))
Đầ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 »

Đúng đúng, chỉ cần ít phút là nó phải có lời giải, tuy nhiên không thể hi vọng có 1 lời giải hoàn hảo đc...

Hiện em cũng đang xây dựng theo hướng tương tác đối tượng:

Đây là ý tưởng xây dựng của em:

(về lớp Sao Tử Vi):

// Thong tin thoi gian
private NAMANSAO _NamAnSao;
private THANGANSAO _ThangAnSao;
private NGAYANSAO _NgayAnSao;
private GIOANSAO _GioAnSao;

// Thong tin gioi tinh
private GIOITINH _GioiTinh;

// Thong tin chinh ve Sao
private SAOTUVI _SaoTuVi;
private List<LOAISAO> _LoaiSao;
private PHUONGVISAO _PhuongViSao;
private TINHAMDUONG _TinhAmDuong;
private NGUHANHSAO _NguHanhSao;
private TINHDACHAM _TinhDacHam;
private VITRIANSAO _ViTriAnSao;

// Cac thong tin khac ve Sao
private string _TenSao;
private string _YNghia;


Làm cách này bộ an sao chạy chậm hơn vì nó phải dựng đối tượng Sao tử vi và tiến hành các định vị, định tính => rồi mới hình thành đối tượng Cung số tử vi => từ đó hình thành lên đối tượng Lá số tử vi. Nhưng kiểm soát được đối tượng sao.

private List<LOAISAO> _LoaiSao;

=> Hôm trước có nhờ làng nước liệt kê giúp các loại sao. Một sao mang nhiều loại, loại này được nhét vào 1 danh sách. Đây là 1 phần trong việc xây dựng luật giải đoán.

=> Đối tượng sao này còn một thuộc tính chi phối nó đó là mối quan hệ với các sao khác, đây là một mảng có trước. Ví dụ với Phong Cáo, ta có quan hệ: Phong Cáo - Thai Phụ - Quốc Ấn - Tướng Quân... Theo tính toán của em, chỉ có khoảng ~ 1000 quan hệ là cùng.

=> Để xây dựng lời giải, ta căn cứ vào đối tượng Cung số tử vi, lấy liệt kê các bộ sao theo quan hệ kia rồi chèn lời giải ứng cho quan hệ đó.

:D Chung quy lại, em nghĩ cũng ko phải phức tạp khi ta quy hoạch được rõ ràng các đối tượng.
Đầu trang

Trả lời bài viết

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