使用go组合卦象并解读运势

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 【5月更文挑战第3天】该文介绍了通过编程方式模拟每日运势占卜,使用Go语言定义了64卦的数据结构,并提供了解卦、比较列表和显示卦象的函数。最后,鼓励读者尝试并提出问题。

1 我们开始吧

今天的运势如何?

question_ans.png

不如来一卦,每天一卦还能以此计时,简直一举两得。 有如此好事为何不做
上一节,我们从树中得到了一爻,还是那样,为了方便,我们把需要的解释做在数据包中

var (
Num       = 6 //# 爻数
ICApp     = NewICin()
AllowNums = map[int]bool{ //允许的坐标
    0: true,
    1: true,
    2: true,
    3: true,
    4: true,
    5: true,
    6: true,
}
Warn = "八卦需要六爻,输入的是:"
//# 朱熹七解
AnySis = map[int]string{
    0: "  六爻全不变,以本 卦卦辞占   ----- 不变 只看本卦 ",
    1: "一爻变,以本卦变爻的爻辞占          ----- 变卦前 的那一 变爻 含义",
        2: " 如果两个爻发生变动,使用本卦的两个变爻占辞判断吉凶,以位置靠上的为主   ----- 变卦前 的 第一变爻 含义",
        3: " 三爻变,以本卦及之卦的卦辞占,以本卦的卦辞为主    ----- 变卦前后都看, 本卦及之卦 含义  本卦为主",
        4: "  四爻变,以之卦中二不变的爻辞占,以下爻的爻辞为主   ----- 变卦 后 看,  之卦 含义  二不变的爻辞占,以下爻的爻辞为主",
        5: "  五爻表,以之卦中不变的爻辞占卜   ----- 变卦 后 看,  之卦 含义  不变的爻辞占 ",
        6: "  六爻全变,乾坤两卦以用九和用六的辞占卜,并参考之卦卦辞,余六十二卦占以之卦卦辞  ----- 变卦 后 看,  之卦 含义,乾坤 用九和用六 ,其他卦全看",
    }

)

2 准备数据

然后定义64卦解释结构体,及其对应的名称和序号
当然以此为基础,我们还可以添加其他变量,如八字,生辰 从而获得一个取名程序

解卦结构体

type ICh struct {
        Num    int
        Warn   string
        AnySis map[int]string
}

func NewICin() *ICh {
        ic := &ICh{
                Num:    Num,
                Warn:   Warn,
                AnySis: AnySis,
        }
        return ic
}

func (ic *ICh) HowAnysis(num int) string {
        fmt.Println("朱熹解:")
        msg := "变爻:" + string(num) + "\n"
        if !AllowNums[num] {
                msg += ic.Warn + string(num)
                return msg
        }

        msg += ic.AnySis[num]
        fmt.Println(msg)
        return msg
}

对比两个列表是否相同 exp: [0,1,1,0,0,1]

func (ic *ICh) CompSlice(firstS, SecSlice []int) bool {
        if len(firstS) != len(SecSlice) {
                return false
        }
        for i := 0; i < len(firstS); i++ {
                if firstS[i] != SecSlice[i] {
                        return false
                }
        }
        return true
}

显示 卦象

func (ic *ICh) CommonType(array []int) {

        for _, g := range array {
                if g == 0 { // # 0 表示阴爻
                        fmt.Println("__ __ (阴)")
                } else if g == 1 { // # 1 表示阳爻
                        fmt.Println("_____ (阳)")
                } else {
                        fmt.Println("")

                }

        }
}

解释文本

func (ic *ICh) CommonText(arrays []int) (string, int) {
        if len(arrays) != ic.Num {
                return ic.Warn + fmt.Sprintf("%v", arrays), 0
        }

        if ic.CompSlice(arrays, []int{1, 1, 1, 1, 1, 1}) {
                return `
        第一卦 乾 乾为天 乾上乾下 

        ...........

3, 组合卦象并解卦

在计算运势的结构体中添加计算和解卦函数

6爻卦象 显示原始卦象, 返回卦值 和 第几卦

    func (dt *TaoBstManager) KanGuaOrigin(env string) ([]int, int) {

            fmt.Printf("%v", start)
            guas, bstm := dt.YaoWithReBuild(49, env)
            fmt.Println("卦象已出:")

            yaos, postionChanges := dt.AnysisYaos(guas)

            fmt.Printf("yaos: postionChanges:, %v, %v, bstree:%v\n", yaos, postionChanges, bstm.Size)
            anysis, numb := ICApp.CommonText(yaos)
            fmt.Printf("第%v 卦, \n %v", numb, anysis)
            return yaos, numb

    }

4 君子才能算,才可以计算

我们拿不定注意,不知道方向的时候,鲁莽或冲动都不是理智的,推算运势也是古人给我们留下的一点理性的光辉,以此我们可以做到三思而后行,万事多考虑。 也许不至于慌不择路,饥不择食。
调用它

btm := bstdata.BstNew
btm.KanGuaOrigin(env)

   卦象已出:
        __ __ (6 老阴)
        __ __ (8 少阴)
        _____ (9 老阳)
        _____ (9 老阳)
        __ __ (6 老阴)
        __ __ (8 少阴)
yaos: postionChanges:, [1 0 0 0 1 0], map[0:true 1:false 2:true 3:true 4:true 5:false], bstree:49
第3 卦,

                第三卦 屯 水雷屯 坎上震下
                ...

5 小结

人路在何方? 没有经费, 难免有错漏,如有兴趣或任何问题,可以留言,提出问题。谢谢。

目录
相关文章
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写
316 0
|
Web App开发 存储 JavaScript
使用AssemblyScript 构建 WebAssembly 应用
WebAssembly,也称为 Wasm,是为 Web 创建的二进制格式。它允许通过从常规 JavaScript 访问的相同 Web API 访问浏览器功能。
845 0
使用AssemblyScript 构建 WebAssembly 应用
|
4月前
|
人工智能 运维 Serverless
语音生成+情感复刻,Cosyvoice2.0 极简云端部署
语音合成技术正快速发展,广泛应用于智能座舱、儿童教育等领域。CosyVoice2凭借多语言生成、零样本生成等优势,成为企业优选。然而,企业仍面临GPU算力依赖、部署运维复杂及成本高等挑战。阿里云函数计算Function AI推出Serverless化语音合成方案,支持CosyVoice2一键部署与弹性扩容,简化调试与运维流程,显著降低成本,助力企业高效落地AI语音应用。
473 18
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
监控 前端开发 API
错误码设计规范探索
本文介绍了错误码设计规范,包括模块化分层、错误码结构及定义、可扩展性与可维护性等方面。错误码用于标识程序中的特定错误,便于快速定位和解决。文中详细描述了全局通用错误码和业务错误码的设计方法,并提出了5-6位数字编码方案,确保错误码的唯一性和可读性。同时,强调了错误码与日志系统的集成及多语言支持的重要性,提供了多个参考文献供进一步学习。
1178 2
|
存储 安全 数据管理
磁盘分区全解:快速搞定硬盘分区
本文介绍了磁盘分区的重要性和好处,如数据管理、性能提升和安全增强,并为初学者提供了Windows系统下的磁盘分区指南。文章提到了三种磁盘分区工具:磁盘管理器、Diskpart命令行工具和第三方软件DiskGenius。同时,详细阐述了如何在磁盘管理器中创建新分区、使用DiskGenius一键重新分区、拆分现有分区以及通过Diskpart命令创建分区的步骤。最后,文章强调了磁盘分区在数据管理和系统优化中的价值。
|
自然语言处理 数据处理 调度
《Havenask分布式索引构建服务--Build Service》
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内几乎整个阿里的搜索业务。本文针对性介绍了Havenask分布式索引构建服务——Build Service,主打稳定、快速、易管理,是在线系统提升竞争力的一大利器。
102122 3
《Havenask分布式索引构建服务--Build Service》
|
小程序
微信小程序App()方法与getApp()方法
微信小程序App()方法与getApp()方法
525 0
微信小程序App()方法与getApp()方法
|
安全 Apache
18.7 SELinux安全上下文的修改和设置
安全上下文的修改是我们必须掌握的,其实也并不难,主要是通过两个命令来实现的。
592 0
18.7 SELinux安全上下文的修改和设置
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
1062 1