易经八卦,PHP函数计算八卦规则

在易经中,我们用—表示阳;--表示阴;
在计算机中, 用0表示--,1表示—;

两爻组合得到 太阳, 太阴, 少阳, 少阴, 在计算机中, 分别用11,00,10,01表示

三爻组合, 得到八卦, 乾、兑、离、震、巽、坎、艮、坤, 分别用111,110,101......001,000表示

两个八卦, 上下组合成64卦, 乾111111, 履110111...艮000001, 坤000000;

占卦, 得到一个本卦, 通过计算机计算, 很轻松得到 错卦(按位异或),互卦,综卦,杂卦;
根据每爻变化, 很简单得到变卦.
计算机对识别 初六,初九, 上六,上九,以及六二, 六三,六四, 可以保存为数组;

在计算机中,需要打印八卦以及六十四卦 图,
需要安装Yijing Symbols.ttf字体;
如: 坤 ䷁ 或䷁ 乾 ䷀ 或 ䷀

1
2
3
4
5
6
7
8
9
10
<style>
        @font-face{
            font-family: "Yijing Symbols";
            src:url("Yijing Symbols.ttf");
        }
        body {
            font-family: "Yijing Symbols";
        }
    </style>
</head>

  

见图:

 

 

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
* 6位二进制数,取反, 011001->100110
**/
function cuoGua($data = ''){
    // 根据异或长度计算匹配的数值
    $numberLen = strlen($data);
    $xorValue = (1 << $numberLen) - 1; // 计算 2^$numberLen - 1  6位63
     
    // 二进制到十进制
    $decNumber = bindec($data);
 
    // 进行按位异或运算
    $resultXor = $decNumber ^ $xorValue;
    // 补0
    $result = str_pad(decbin($resultXor), $numberLen, '0', STR_PAD_LEFT);
    return $result; // 返回十进制结果
}
 
function zongGua($data = ''){
    $data = str_split($data);
    $xinArr = array(
        $data[5],
        $data[4],
        $data[3],
        $data[2],
        $data[1],
        $data[0],
    );
    return implode('', $xinArr);
}
 
function zaGua($data = ''){
    $data = str_split($data);
    $xinArr = array(
        $data[3],
        $data[4],
        $data[5],
        $data[0],
        $data[1],
        $data[2],
    );
    return implode('', $xinArr);
}
 
function huGua($data = ''){
    $data = str_split($data);
    $xinArr = array(
        $data[1],
        $data[2],
        $data[3],
        $data[2],
        $data[3],
        $data[4],
    );
    return implode('', $xinArr);
}
 
function yaoName($data = ''){
    $configArr = array(
        '06' => '初六',
        '16' => '六二',
        '26' => '六三',
        '36' => '六四',
        '46' => '六五',
        '56' => '上六',
        '09' => '初九',
        '19' => '九二',
        '29' => '九三',
        '39' => '九四',
        '49' => '九五',
        '59' => '上九',
    );
    $data = str_split($data);
    foreach($data as $key => $val){
        if($val > 0){
            $result[$key] = $configArr[$key.'9'];
        }else{
            $result[$key] = $configArr[$key.'6'];
        }
         
    }
    return $result;
}
 
function bianGua($data = '', $yao = 1){
    $xinArr = str_split($data);
    ($xinArr[$yao-1] > 0)?$xinArr[$yao-1]=0:$xinArr[$yao-1]=1;
    return implode('', $xinArr);
}

  新的函数封装

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function cuoGua($data = ''){
    $data = str_split($data);
    $result = array_map(function($v) {
        return ($v === '1') ? '0' : '1';
    }, $data);
     
    return implode('', $result);
}
 
function zongGua($data = ''){
    //123456位倒序 654321位
    $data = str_split($data);
 
    $result = array_reverse($data);
    return implode('', $result);
}
 
function zaGua($data = ''){
    //123位与456位交换
 
    $data = str_split($data);
    $splitIndex = 3;
    $result = array_merge(
        array_slice($data, $splitIndex),
        array_slice($data, 0, $splitIndex)
    );
    return implode('', $result);
}
 
function huGua($data = ''){
    //234位与345位组成新卦
    $data = str_split($data);
 
    $result = array_map(function($i) use ($data) {
        return ($i < 3) ? $data[$i + 1] : $data[$i - 1];
    }, array_keys($data));
     
    return implode('', $result);
}

  

posted @ 2024-11-12 13:17  钢锅  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-11-12 支持节假日,支持经纬度,支持调休时控器
2015-11-12 php_REQUEST调试模式
点击右上角即可分享
微信分享提示