標籤:AC 太極 std 分表 出現 include 三次 注釋 手機
周易是一本玄學的書。
其中裡面的算卦我特別感興趣,對於梅花易數或者投硬幣的方法可以自己親自算。速度蠻快的。
但是六爻算卦卻有些麻煩。在自己算了一卦後,便決定試試將其程式化,估計應該沒什麼人感興趣,注釋什麼的我也省了。
手機寫的,估計也沒什麼排版。
蓍草占卜事先要準備五十根蓍草。演算開始時,先取一根放在外面,表示天地產生之前的“太極”狀態。然後將剩餘的四十九根蓍草隨意分為兩部分,左手所持有的部分表示“天”,右手所持有的部分表示“地”。再從右手任意取出一根放在左手小指和無名指之間,表示“人”。此後繼續以每四根為一組表示“四季”進行分發,先用右手分數左手的蓍草,再用左手分數右手的蓍草。直至分到出現以下規律:左餘一,右餘三,左餘二,右餘二,左餘三,右餘一,左餘四,右餘四。然後,將左手所剩蓍草放在右手中指和無名指之間,右手所剩蓍草放在左手食指與中指之間,這就完成了“第一變”。“第二變”如法炮製,去除指縫間的餘數,將剩餘的蓍草按“第一變”的順序和方法繼續演算。然後按間樣的順序和辦法進行第三次演算。“三變”之後,兩手所持的蓍草總數應為三十六、三十二、二十是二十四。然後除以四,得到一爻。
蓍草占卜共有六爻,必須經過十八次演算,才能得到一個卦象,因此又被稱為“六爻”。推演過程全部結束後,根據推論規則對卦象進行解釋,占卜才算真正完成。
1 #include <iostream> 2 #include <stdlib.h> 3 #include <time.h> 4 using namespace std; 5 6 7 int main() { 8 9 srand(unsigned (time(0)));10 int su;11 int a, b, a1, b1, c;12 int yao[6];//儲存六爻13 for (int i1 = 0; i1 < 6; i1++) {14 su = 49;15 for (int i2 = 0; i2 < 3; i2++) {16 17 a = 4 + rand() % su - 5;18 b = su - 1 - a;19 a1 = a % 4;20 b1 = b % 4;21 22 if (a1 == 0) {23 a1 = 4;24 }25 if (b1 == 0) {26 b1 = 4;27 }28 29 c = 1 + a1 + b1;30 31 su = su - c;32 33 /* cout << "a: " << a << endl; cout << "b: " << b << endl;34 35 cout << "a1: " << a1 << endl; cout << "b1: " << b1 << endl;36 37 //cout << "c: " << c << endl;38 39 cout << "數: " << su << endl;40 41 cout << endl; */42 43 44 }45 46 yao[i1] = su / 4;47 48 }49 cout << "本卦:\n";50 for (int i = 0; i < 6; i++) {51 52 // cout << yao[i] << "\n";53 54 switch (yao[i]) {55 56 case 6:57 cout << "--\n";58 break;59 case 7:60 cout << "─\n";61 break;62 case 8:63 cout << "--x\n";64 break;65 case 9:66 cout << "─○\n";67 break;68 69 }70 }71 cout << "變卦:\n";72 for (int i = 0; i < 6; i++) {73 74 switch (yao[i]) {75 76 case 6:77 cout << "--\n";78 break;79 case 7:80 cout << "─\n";81 break;82 case 8:83 cout << "─\n";84 break;85 case 9:86 cout << "--\n";87 break;88 89 }90 }91 92 93 94 }
[c++][代碼]六爻算卦的程式化