国学*周易*梅花易数 代码实现效果展示 - 梅花心易
近日偶遇 舒涵老師 《國學*周易》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;} }以后有需要測算兇吉的朋友,可以找我代勞哈!!!
?
總結
以上是生活随笔為你收集整理的国学*周易*梅花易数 代码实现效果展示 - 梅花心易的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: S32K-LPSPI中文手册
- 下一篇: Lenovo Y50 (1080P) 安