当前位置:网站首页>国学*周易*梅花易数 代码实现效果展示 - 梅花心易
国学*周易*梅花易数 代码实现效果展示 - 梅花心易
2022-08-05 03:34:00 【星梦天河】
近日偶遇 舒涵老师 《国学*周易》4天免费试听课,带着一颗好奇心,看了2晚直播;
第1课入门周易基础知识;
第2课讲梅花易数;
听完梅花易数,突来灵感,随机报2个数字,根据公式测算凶吉;感觉就是一道编程题,于是第2天工作,花了一个上午也出了公式,下面展示一下执行效果。
- 报数:32,57;得到以下执行结果:
- >>>> 说明这是 上课出的题目,此处用于验证个人的公式对不对!
用 * > *
---------
体 * > *
输入(32,57) ===> [原卦](**) ===> [变卦](**)
测算(32,57) ===> 依始运势:大吉,事易成! 未来走势:小凶,事难成!
MSG(32,57) ===> At the beginning: very good, it is so easy! At the end: I think it is difficult!
- 报数:22,44;得到以下执行结果:
- >>>> 说明这是 2022-08-02 佩洛西窜访中国台湾地区的飞机落地时间,相信未走势完全有利于中方
用 * > *
---------
体 * > *
输入(22,44) ===> [原卦](**) ===> [变卦](**)
测算(22,44) ===> 依始运势:大吉,事易成! 未来走势:大吉,事易成!
MSG(22,44) ===> At the beginning: very good, it is so easy! At the end: very good, it is so easy!
- 报数:18,22;得到以下执行结果:
- >>>> 说明公司聚会常去 十八二十二 这家店,猜想此店老板有风水学问,这2个数字肯定大吉,果不其然!!
用 * > *
---------
体 * > *
输入(18,22) ===> [原卦](**) ===> [变卦](**)
测算(18,22) ===> 依始运势:大吉,事易成! 未来走势:大吉,事易成!
MSG(18,22) ===> At the beginning: very good, it is so easy! At the end: very good, it is so easy!
核心代码:
package org.gitee.zhouyi.enums;
import lombok.Getter;
import java.util.Arrays;
/**
* 八卦定义:(乾1-兑2-离3-震4-巽5-坎6-艮7-坤8)
* 卦象(乾111-兑011-离101-震001-巽110-坎010-艮100-坤000)
* 五行(乾1金-兑2金-离3火-震4木-巽5木-坎6水-艮7土-坤8土)
* @author: mengxin
* @date: 2022/8/3 8:11
*/
@Getter
public enum EightGua {
QAN(1, "乾", "111", FiveXing.JIN, "*"),
DUI(2, "兑", "011", FiveXing.JIN, "*"),
LI(3, "离", "101", FiveXing.HUO, "*"),
ZHEN(4, "震", "001", FiveXing.MU, "*"),
XUN(5, "巽", "110", FiveXing.MU, "*"),
KAN(6, "坎", "010", FiveXing.SHUI, "*"),
GEN(7, "艮", "100", FiveXing.TU, "*"),
KUN(0, "坤", "000", FiveXing.TU, "*");
private int order;
private String name;
private String chart;
private FiveXing fiveXing;
private String logo;
EightGua(int order, String name, String chart, FiveXing fiveXing, String logo){
this.order = order;
this.name = name;
this.chart = chart;
this.fiveXing = fiveXing;
this.logo = logo;
}
/**
* 根据序号获取
* @param order
* @return
*/
public static EightGua getByOrder(int order){
return Arrays.stream(EightGua.values()).filter(row -> row.getOrder() == order).findAny().orElse(null);
}
/**
* 根据卦图获取
* @param chart
* @return
*/
public static EightGua getByChart(String chart){
return Arrays.stream(EightGua.values()).filter(row -> row.getChart().equals(chart)).findAny().orElse(null);
}
}
package org.gitee.zhouyi.enums;
import lombok.Getter;
/**
* 五行相生相克定义: 木 火 土 金 水
* 五行生克图(木s火k土,火s土k金,土s金k水,金s水k木,水s木k火)
* @author: mengxin
* @date: 2022/8/3 8:20
*/
@Getter
public enum FiveXing {
MU("木", FiveElement.HUO, FiveElement.TU),
HUO("火", FiveElement.TU, FiveElement.JIN),
TU("土", FiveElement.JIN, FiveElement.SHUI),
JIN("金", FiveElement.SHUI, FiveElement.MU),
SHUI("水", FiveElement.MU, FiveElement.HUO);
private String name;
private FiveElement better;
private FiveElement worse;
/**
* 定义
* @param name 名称
* @param better 相生
* @param worse 相克
*/
FiveXing(String name, FiveElement better, FiveElement worse){
this.name = name;
this.better = better;
this.worse = worse;
}
//五行定义
public enum FiveElement {
MU("木", FiveXing.MU),
HUO("火", FiveXing.HUO),
TU("土", FiveXing.TU),
JIN("金", FiveXing.JIN),
SHUI("水", FiveXing.SHUI);
private String name;
private FiveXing xing;
FiveElement(String name, FiveXing xing){
this.name = name;
this.xing = xing;
}
}
}
package org.gitee.zhouyi.enums;
import lombok.Getter;
/**
* 六爻:用体定义
* @author: mengxin
* @date: 2022/8/3 8:56
*/
@Getter
public enum SixYao {
TY1("体用合一", "大吉,事易成!", "very good, it is so easy!"),
YST("用生体", "大吉,事易成!", "very good, it is so easy!"),
YKT("用克体", "大凶,事不成!", "I think it is no way!"),
TSY("体生用", "小凶,事难成!", "I think it is difficult!"),
TKY("体克用", "小吉,事可成!", "I think it can be done!");
private String name;
private String zhDesc;
private String desc;
SixYao(String name, String zhDesc, String desc){
this.name = name;
this.zhDesc = zhDesc;
this.desc = desc;
}
/**
* 根据上爻与下爻计算YaoDef
* @param first
* @param second
* @return
*/
public static SixYao getYaoDef(FiveXing first, FiveXing second){
if(first==second){
return SixYao.TY1;
}else if(FiveXing.MU==first && FiveXing.HUO==second){
//木生火 -> 体生用
return SixYao.TSY;
}else if(FiveXing.MU==first && FiveXing.TU==second){
//土生木 -> 体生用
return SixYao.TSY;
}else if(FiveXing.MU==first && FiveXing.JIN==second){
//金克木 -> 体克用
return SixYao.TKY;
}else if(FiveXing.MU==first && FiveXing.SHUI==second){
//水生木 -> 体生用
return SixYao.TSY;
}else if(FiveXing.HUO==first && FiveXing.MU==second){
//木生火 -> 体生用
return SixYao.TSY;
}else if(FiveXing.HUO==first && FiveXing.TU==second){
//火生土 -> 用生体
return SixYao.YST;
}else if(FiveXing.HUO==first && FiveXing.JIN==second){
//火克金 -> 用克体
return SixYao.YKT;
}else if(FiveXing.HUO==first && FiveXing.SHUI==second){
//水克火 -> 体克用
return SixYao.TKY;
}else if(FiveXing.TU==first && FiveXing.MU==second){
//土生木 -> 用生体
return SixYao.YST;
}else if(FiveXing.TU==first && FiveXing.HUO==second){
//火生土 -> 体生用
return SixYao.TSY;
}else if(FiveXing.TU==first && FiveXing.JIN==second){
//土生金 -> 用生体
return SixYao.YST;
}else if(FiveXing.TU==first && FiveXing.SHUI==second){
//土克水 -> 用克体
return SixYao.YKT;
}else if(FiveXing.JIN==first && FiveXing.MU==second){
//金克木 -> 用克体
return SixYao.YKT;
}else if(FiveXing.JIN==first && FiveXing.HUO==second){
//火克金 -> 体克用
return SixYao.TKY;
}else if(FiveXing.JIN==first && FiveXing.TU==second){
//土生金 -> 体生用
return SixYao.TSY;
}else if(FiveXing.JIN==first && FiveXing.SHUI==second){
//金生水 -> 用生体
return SixYao.YST;
}else if(FiveXing.SHUI==first && FiveXing.MU==second){
//水生木 -> 用生体
return SixYao.YST;
}else if(FiveXing.SHUI==first && FiveXing.HUO==second){
//水克火 -> 用克体
return SixYao.YKT;
}else if(FiveXing.SHUI==first && FiveXing.TU==second){
//土克水 -> 体克用
return SixYao.TKY;
}else if(FiveXing.SHUI==first && FiveXing.JIN==second){
//金生水 -> 体生用
return SixYao.TSY;
}
return null;
}
}
package org.gitee.zhouyi.pojo;
import lombok.Getter;
import lombok.Setter;
import org.gitee.zhouyi.enums.EightGua;
import org.gitee.zhouyi.enums.FiveXing;
import org.gitee.zhouyi.enums.SixYao;
import java.io.Serializable;
/**
* 测算结果定义
* @author: mengxin
* @date: 2022/8/3 11:18
*/
@Getter
@Setter
public class PlumResult implements Serializable {
private Integer start;
private Integer end;
private EightGua firstGua;
private EightGua secondGua;
private EightGua firstNewGua;
private EightGua secondNewGua;
/*
用 {A1}>{A2}
------------
体 {B1}>{B2}
*/
public String getProcess() {
String upStrFormat = "用 {A1} > {A2}\n";
String centerStr = "---------\n";
String downStrFormat = "体 {B1} > {B2}\n";
String upStr = upStrFormat.replace("{A1}", firstGua.getLogo()).replace("{A2}", firstNewGua.getLogo());
String downStr = downStrFormat.replace("{B1}", secondGua.getLogo()).replace("{B2}", secondNewGua.getLogo());
StringBuffer sb = new StringBuffer();
sb.append(upStr);
sb.append(centerStr);
sb.append(downStr);
return sb.toString();
}
public String getProcess2() {
String processStr = String.format("输入(%s,%s) ===> [原卦](%s%s) ===> [变卦](%s%s)", start, end, firstGua.getLogo(), secondGua.getLogo(), firstNewGua.getLogo(), secondNewGua.getLogo());
return processStr;
}
public String getResult() {
//5.分用体 6.标五行
FiveXing firstFX = firstGua.getFiveXing();
FiveXing secondFX = secondGua.getFiveXing();
FiveXing firstNewFX = firstNewGua.getFiveXing();
FiveXing secondNewFX = secondNewGua.getFiveXing();
//7.定吉凶
SixYao orgSixYao = SixYao.getYaoDef(firstFX, secondFX);
SixYao newSixYao = SixYao.getYaoDef(firstNewFX, secondNewFX);
//8.出结果
String result = String.format("测算(%s,%s) ===> 依始运势:%s 未来走势:%s", start, end, orgSixYao.getZhDesc(), newSixYao.getZhDesc());
return result;
}
public String getMessage() {
//5.分用体 6.标五行
FiveXing firstFX = firstGua.getFiveXing();
FiveXing secondFX = secondGua.getFiveXing();
FiveXing firstNewFX = firstNewGua.getFiveXing();
FiveXing secondNewFX = secondNewGua.getFiveXing();
//7.定吉凶
SixYao orgSixYao = SixYao.getYaoDef(firstFX, secondFX);
SixYao newSixYao = SixYao.getYaoDef(firstNewFX, secondNewFX);
//8.出结果
String result = String.format("MSG(%s,%s) ===> At the beginning: %s At the end: %s", start, end, orgSixYao.getDesc(), newSixYao.getDesc());
return result;
}
}
以后有需要测算凶吉的朋友,可以找我代劳哈!!!
边栏推荐
- Redis key basic commands
- 基于生长的棋盘格角点检测方法
- 银行数据采集,数据补录与指标管理3大问题如何解决?
- This year's Qixi Festival, "love vegetables" are more loving than gifts
- 达梦8数据库导出导入
- Fifteen. Actual combat - MySQL database building table character set and collation
- The sword refers to Offer--find the repeated numbers in the array (three solutions)
- 2022.8.4-----leetcode.1403
- XMjs cross-domain problem solving
- .NET Application -- Helloworld (C#)
猜你喜欢
36-Jenkins-Job迁移
iMedicalLIS listener (2)
UE4 opens door via interaction (keyboard key)
Why is the pca component not associated
How to discover a valuable GameFi?
UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
Android 面试题——如何徒手写一个非阻塞线程安全队列 ConcurrentLinkedQueue?
.NET Application -- Helloworld (C#)
用CH341A烧录外挂Flash (W25Q16JV)
大像素全景制作完成后,推广方式有哪些?
随机推荐
事件解析树Drain3使用方法和解释
presto启动成功后出现2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer
How to Add Category-Specific Widgets in WordPress
cross domain solution
Spark基础【介绍、入门WordCount案例】
GC Gaode coordinate and Baidu coordinate conversion
ffmpeg 枚举decoders, encoders 分析
10 years of testing experience, worthless in the face of the biological age of 35
Use CH341A to program external Flash (W25Q16JV)
[Solved] Unity Coroutine coroutine is not executed effectively
MRTK3开发Hololens应用-手势拖拽、旋转 、缩放物体实现
leetcode-每日一题1403. 非递增顺序的最小子序列(贪心)
iMedicalLIS listener (2)
.NET应用程序--Helloworld(C#)
开发Hololens遇到The type or namespace name ‘HandMeshVertex‘ could not be found..
2022软件测试工程师最全面试题
What is the difference between SAP ERP and ORACLE ERP?
ffmpeg enumeration decoders, encoders analysis
阿里本地生活单季营收106亿,大文娱营收72亿,菜鸟营收121亿
论治理与创新,2022 开放原子全球开源峰会 OpenAnolis 分论坛圆满落幕