码迷,mamicode.com
首页 > 编程语言 > 详细

[c++][代码]六爻算卦的程序化

时间:2018-04-06 15:19:09      阅读:227      评论:0      收藏:0      [点我收藏+]

标签: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++][代码]六爻算卦的程序化

标签:AC   太极   std   分表   出现   include   三次   注释   手机   

原文地址:https://www.cnblogs.com/moontide/p/8727574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!