易经八卦,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 ); } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-11-12 支持节假日,支持经纬度,支持调休时控器
2015-11-12 php_REQUEST调试模式