易經八卦,

钢锅發表於2024-11-12

在易經中,我們用—表示陽;--表示陰;
在計算機中, 用0表示--,1表示—;

兩爻組合得到 太陽, 太陰, 少陽, 少陰, 在計算機中, 分別用11,00,10,01表示

三爻組合, 得到八卦, 乾、兌、離、震、巽、坎、艮、坤, 分別用111,110,101......001,000表示

兩個八卦, 上下組合成64卦, 乾111111, 履110111...艮000001, 坤000000;

占卦, 得到一個本卦, 透過計算機計算, 很輕鬆得到 錯卦(按位異或),互卦,綜卦,雜卦;
根據每爻變化, 很簡單得到變卦.
計算機對識別 初六,初九, 上六,上九,以及六二, 六三,六四, 可以儲存為陣列;

在計算機中,需要列印八卦以及六十四卦 圖,
需要安裝Yijing Symbols.ttf字型;
如: 坤 ䷁ 或䷁ 乾 ䷀ 或 ䷀

<style>
        @font-face{
			font-family: "Yijing Symbols";
			src:url("Yijing Symbols.ttf");
		}
		body {
            font-family: "Yijing Symbols";
        }
    </style>
</head>

  

見圖:

  

/**
* 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);
}

  

相關文章