问题:我输入 男方的生日:1980-01-01 01:01:01 女方生日:1980-01-01 01:01:01
跪求这样一个八字合婚算法
合婚软件似乎很多,关键是怎么去写或者说算法,网络上几乎没有类似文章
作为易学高手的我(大师♂罗莊)对告诉各位码农如何制作合婚软件 负有不可推卸的责任。
算法介绍:
现在很多乡村算命先生都用 呂才合婚法或本命卦合婚法。
我老师教我的也是本命卦合婚法,
这个算法有很多版本,我这里采用中华易帆风顺研究院齐炳权老师算法
原始:
http://blog.sina.com.cn/s/blog_62a4f99c0102dygx.html
一。本命卦数理:坎1,坤2,震3,巽4,中宫5(男坤,女艮),乾6,兑7,艮8,离9。
二。中华易帆风顺研究院齐炳权老师总结出最快速的计算方法如下:
男性:11-出生年横加(也为流年玄空飞星入中宫计算公式)
女性:4+出生年横加
举例:1989年出生的男性:11-(1+9+8+9)=11-(27)=11-(2+7)=2,即本命卦为坤卦;
1989年出生的女性 :4+(1+9+8+9)=4+(27)=4+9=(13)=1+3=4,即本命卦为巽卦 。
2012年出生的男性:11-(2+0+1+2)=11-5=6,即本命卦为乾卦;
2012年出生的女性:4+(2+0+1+2)=4+5=9,即本命卦为离卦。
结果可以看看原文
这里用点代码实现下而已
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package luozhuanghehun;
/**
* 本命卦合婚
*
* @author luozhuang 大师♂罗莊
*/
public class Luozhuanghehun {
enum sex {
man,
woman;
}
enum basicstring {
坎, 坤, 震, 巽, 乾, 兑, 艮, 离;
}
public String hehun(String man, String woman) {
if (man.length() != 4 || woman.length() != 4) {
return "输入不正确";
}
return peihun(getnumber(man,sex.man), getnumber(woman,sex.woman));
}
public String peihun(String man, String woman) {
return peihun(getnumber(man,sex.man), getnumber(woman,sex.woman));
}
private String peihun(int man, int woman) {
basicstring mang = basicsnumber(man, sex.man);
basicstring womang = basicsnumber(woman, sex.woman);
// 乾命男配艮命女 ,艮命男配乾命女;
if (mang == basicstring.乾 && womang == basicstring.艮) {
return "延年婚";
}
if (womang == basicstring.乾 && mang == basicstring.艮) {
return "延年婚";
}
// 震命男配坎命女,坎命男配震命女;
if (mang == basicstring.震 && womang == basicstring.坎) {
return "延年婚";
}
if (womang == basicstring.震 && mang == basicstring.坎) {
return "延年婚";
}
// 兑命男配坤命女,坤命男配兑命女;
if (mang == basicstring.兑 && womang == basicstring.坤) {
return "延年婚";
}
if (womang == basicstring.兑 && mang == basicstring.坤) {
return "延年婚";
}
// 巽命男配离命女,离命男配巽命女;
if (mang == basicstring.巽 && womang == basicstring.离) {
return "延年婚";
}
if (womang == basicstring.巽 && mang == basicstring.离) {
return "延年婚";
}
// 坎命男配巽命女,巽命男配坎命女;
if (mang == basicstring.坎 && womang == basicstring.巽) {
return "生气婚";
}
if (womang == basicstring.坎 && mang == basicstring.巽) {
return "生气婚";
}
// 震命男配离命女,离命女配震命男;
if (mang == basicstring.震 && womang == basicstring.离) {
return "生气婚";
}
if (womang == basicstring.震 && mang == basicstring.离) {
return "生气婚";
}
// 乾命男配兑命女,兑命男配乾命女;
if (mang == basicstring.乾 && womang == basicstring.兑) {
return "生气婚";
}
if (womang == basicstring.乾 && mang == basicstring.兑) {
return "生气婚";
}
// 艮命男配坤命女,坤命男配艮命女。
if (mang == basicstring.艮 && womang == basicstring.坤) {
return "生气婚";
}
if (womang == basicstring.艮 && mang == basicstring.坤) {
return "生气婚";
}
// 坎命男配艮命女,艮命男配坎命女;
if (mang == basicstring.艮 && womang == basicstring.坎) {
return "天医婚";
}
if (womang == basicstring.艮 && mang == basicstring.坎) {
return "天医婚";
}
// 坤命男配巽命女,巽命男配坤命女;
if (mang == basicstring.坤 && womang == basicstring.巽) {
return "天医婚";
}
if (womang == basicstring.坤 && mang == basicstring.巽) {
return "天医婚";
}
// 震命男配乾命女,乾命男配震命女;
if (mang == basicstring.震 && womang == basicstring.乾) {
return "天医婚";
}
if (womang == basicstring.震 && mang == basicstring.乾) {
return "天医婚";
}
// 兑命男配离命女,离命男配兑命女。
if (mang == basicstring.兑 && womang == basicstring.离) {
return "天医婚";
}
if (womang == basicstring.兑 && mang == basicstring.离) {
return "天医婚";
}
// 坎命男配乾命女,乾命男配坎命女;
if (mang == basicstring.坎 && womang == basicstring.乾) {
return "六煞婚";
}
if (womang == basicstring.坎 && mang == basicstring.乾) {
return "六煞婚";
}
// 震命男配艮命女,艮命男配震命女;
if (mang == basicstring.震 && womang == basicstring.艮) {
return "六煞婚";
}
if (womang == basicstring.震 && mang == basicstring.艮) {
return "六煞婚";
}
// 兑命男配巽命女,巽命男配兑命女;
if (mang == basicstring.兑 && womang == basicstring.巽) {
return "六煞婚";
}
if (womang == basicstring.兑 && mang == basicstring.巽) {
return "六煞婚";
}
// 离命男配坤命女,坤命男配离命女。
if (mang == basicstring.离 && womang == basicstring.坤) {
return "六煞婚";
}
if (womang == basicstring.离 && mang == basicstring.坤) {
return "六煞婚";
}
// 坎命男配离命女,离命男配坎命女;
if (mang == basicstring.坎 && womang == basicstring.离) {
return "祸害婚";
}
if (womang == basicstring.坎 && mang == basicstring.离) {
return "祸害婚";
}
//巽命男配震命女,震命男配巽命女;
if (mang == basicstring.巽 && womang == basicstring.震) {
return "祸害婚";
}
if (womang == basicstring.巽 && mang == basicstring.震) {
return "祸害婚";
}
//乾命男配坤命女,坤命男配乾命女;
if (mang == basicstring.乾 && womang == basicstring.坤) {
return "祸害婚";
}
if (womang == basicstring.乾 && mang == basicstring.坤) {
return "祸害婚";
}
//兑命男配巽命女,巽命男配兑命女;
if (mang == basicstring.兑 && womang == basicstring.巽) {
return "祸害婚";
}
if (womang == basicstring.兑 && mang == basicstring.巽) {
return "祸害婚";
}
// 坎命男配坎命女,乾命男配乾命女;
//
// 坤命男配坤命女,兑命男配兑命女;
//
// 震命男配震命女,艮命男配艮命女;
//
// 巽命男配巽命女,离命男配离命女。
if (mang == womang) {
return "伏位婚";
}
// 坎命男配兑命女,兑命男配坎命女;
if (mang == basicstring.坎 && womang == basicstring.兑) {
return "五鬼婚";
}
if (womang == basicstring.坎 && mang == basicstring.兑) {
return "五鬼婚";
}
// 震命男配坤命女,坤命男配震命女;
if (mang == basicstring.震 && womang == basicstring.坤) {
return "五鬼婚";
}
if (womang == basicstring.震 && mang == basicstring.坤) {
return "五鬼婚";
}
// 离命男配艮命女,艮命男配离命女;
if (mang == basicstring.离 && womang == basicstring.艮) {
return "五鬼婚";
}
if (womang == basicstring.离 && mang == basicstring.艮) {
return "五鬼婚";
}
// 乾命男配巽命女,巽命男配乾命女。;
if (mang == basicstring.乾 && womang == basicstring.巽) {
return "五鬼婚";
}
if (womang == basicstring.乾 && mang == basicstring.巽) {
return "五鬼婚";
}
// 坎命男配坤命女,坤命男配坎命女;
if (mang == basicstring.坎 && womang == basicstring.坤) {
return "绝命婚";
}
if (womang == basicstring.坎 && mang == basicstring.坤) {
return "绝命婚";
}
// 震命男配兑命女,兑命男配震命女;
if (mang == basicstring.震 && womang == basicstring.兑) {
return "绝命婚";
}
if (womang == basicstring.震 && mang == basicstring.兑) {
return "绝命婚";
}
// 巽命男配艮命女,艮命男配巽命女;
if (mang == basicstring.巽 && womang == basicstring.艮) {
return "绝命婚";
}
if (womang == basicstring.巽 && mang == basicstring.艮) {
return "绝命婚";
}
// 乾命男配离命女,离命男配乾命女。
if (mang == basicstring.乾 && womang == basicstring.离) {
return "绝命婚";
}
if (womang == basicstring.乾 && mang == basicstring.离) {
return "绝命婚";
}
return "输入不正确";
}
/** 数字选宫挂
*
* @param number 数字
* @param isman 男人么
* @return 属于宫挂
*/
public Luozhuanghehun.basicstring basicsnumber(int number, sex isman) {
switch (number) {
case 1:
return basicstring.坎;
case 2:
return basicstring.坤;
case 3:
return basicstring.震;
case 4:
return basicstring.巽;
case 5:
if (isman == sex.man) {
return basicstring.坤;
} else {
return basicstring.艮;
}
case 6:
return basicstring.乾;
case 7:
return basicstring.兑;
case 8:
return basicstring.艮;
case 9:
return basicstring.离;
}
return null;
}
/**
* 男性:11-出生年横加(也为流年玄空飞星入中宫计算公式) 女性:4+出生年横加
* 1989年出生的男性:11-(1+9+8+9)=11-(27)=11-(2+7)=2,即本命卦为坤卦
*
* @param year 输入年份字符
* @return 重载getnumber
*/
public int getnumber(String year, sex isman) throws NumberFormatException {
int yearnumber = Short.parseShort(year);
return getnumber(yearnumber,isman);
}
/**
* 男性:11-出生年横加(也为流年玄空飞星入中宫计算公式) 女性:4+出生年横加
* 1989年出生的男性:11-(1+9+8+9)=11-(27)=11-(2+7)=2,即本命卦为坤卦
*
* @param year 输入年份数字
* @return 返回结果
*/
public int getnumber(int year, sex isman) {
int m = ((int) (year / 1000) % 10);
int h = ((int) (year / 100) % 10);
int s = ((int) (year / 10) % 10);
int g = year % 10;
int sum = m + h + g + s;
int result;
if (isman == sex.man) {
result = 11 - ((int) (sum / 10) % 10) - (sum % 10);
} else {
result = 4+ ((int) (sum / 10) % 10) + (sum % 10);
}
if(result>10)
{
result=result-9;//如果超过10,原文没有写怎么做,我自己推的
}
return result;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Luozhuanghehun my = new Luozhuanghehun();
String result=my.hehun("1956", "1856");
System.out.println(my.getnumber("1956",sex.man));
System.out.println(my.basicsnumber(my.getnumber("1956",sex.man),sex.man));
System.out.println(my.getnumber("1856",sex.woman));
System.out.println(my.basicsnumber(my.getnumber("1856",sex.woman),sex.woman));
System.out.println(result);
}
}