天干地支#
[1]:
#r "nuget:ConsoleTables"
#r "nuget:YiJingFramework.PrimitiveTypes"
using ConsoleTables;
using YiJingFramework.PrimitiveTypes;
Installed Packages
- ConsoleTables, 2.6.1
- YiJingFramework.PrimitiveTypes, 4.0.1
类型 Tiangan 和 Dizhi 分别表示天干和地支。
总体上来说其与五行类似,主要的不同之处在于其序数是具有一定意义的,因此提供了 Index 属性和 FromIndex 方法,且其值是从 1 开始的:
[2]:
var numbers = Enumerable.Range(1 - 2, 12 + 4);
var table = new ConsoleTable("i", "t = Tiangan.FromIndex(i)", "t.Index", "d = Dizhi.FromIndex(i)", "d.Index");
foreach (var i in numbers)
{
var t = Tiangan.FromIndex(i);
var newIT = t.Index;
var d = Dizhi.FromIndex(i);
var newID = d.Index;
var starT = newIT == i ? ' ' : '*';
var starD = newID == i ? ' ' : '*';
table.AddRow(i, $"{starT}{t:C} {t}", newIT, $"{starD}{d:C} {d}", newID);
}
table.Write(Format.Minimal);
| i | t = Tiangan.FromIndex(i) | t.Index | d = Dizhi.FromIndex(i) | d.Index |
|----|--------------------------|---------|------------------------|---------|
| -1 | *壬 Ren | 9 | *戌 Xu | 11 |
| 0 | *癸 Gui | 10 | *亥 Hai | 12 |
| 1 | 甲 Jia | 1 | 子 Zi | 1 |
| 2 | 乙 Yi | 2 | 丑 Chou | 2 |
| 3 | 丙 Bing | 3 | 寅 Yin | 3 |
| 4 | 丁 Ding | 4 | 卯 Mao | 4 |
| 5 | 戊 Wu | 5 | 辰 Chen | 5 |
| 6 | 己 Ji | 6 | 巳 Si | 6 |
| 7 | 庚 Geng | 7 | 午 Wu | 7 |
| 8 | 辛 Xin | 8 | 未 Wei | 8 |
| 9 | 壬 Ren | 9 | 申 Shen | 9 |
| 10 | 癸 Gui | 10 | 酉 You | 10 |
| 11 | *甲 Jia | 1 | 戌 Xu | 11 |
| 12 | *乙 Yi | 2 | 亥 Hai | 12 |
| 13 | *丙 Bing | 3 | *子 Zi | 1 |
| 14 | *丁 Ding | 4 | *丑 Chou | 2 |
不过,由于在使用 default 创建结构体时,其内部值会为零。因此,内部值不能使用上述操作的结果。考虑到这一问题,我们仍然提供了强制转换运算符,它直接使用内部值 Index - 1 :
[3]:
var numbers = Enumerable.Range(0 - 2, 12 + 4);
var table = new ConsoleTable("i", "t = (Tiangan)i", "(int)t", "d = (Dizhi)i", "(int)d");
foreach (var i in numbers)
{
var t = (Tiangan)i;
var newIT = (int)t;
var d = (Dizhi)i;
var newID = (int)d;
var starT = newIT == i ? ' ' : '*';
var starD = newID == i ? ' ' : '*';
table.AddRow(i, $"{starT}{t:C} {t}", newIT, $"{starD}{d:C} {d}", newID);
}
table.Write(Format.Minimal);
| i | t = (Tiangan)i | (int)t | d = (Dizhi)i | (int)d |
|----|----------------|--------|--------------|--------|
| -2 | *壬 Ren | 8 | *戌 Xu | 10 |
| -1 | *癸 Gui | 9 | *亥 Hai | 11 |
| 0 | 甲 Jia | 0 | 子 Zi | 0 |
| 1 | 乙 Yi | 1 | 丑 Chou | 1 |
| 2 | 丙 Bing | 2 | 寅 Yin | 2 |
| 3 | 丁 Ding | 3 | 卯 Mao | 3 |
| 4 | 戊 Wu | 4 | 辰 Chen | 4 |
| 5 | 己 Ji | 5 | 巳 Si | 5 |
| 6 | 庚 Geng | 6 | 午 Wu | 6 |
| 7 | 辛 Xin | 7 | 未 Wei | 7 |
| 8 | 壬 Ren | 8 | 申 Shen | 8 |
| 9 | 癸 Gui | 9 | 酉 You | 9 |
| 10 | *甲 Jia | 0 | 戌 Xu | 10 |
| 11 | *乙 Yi | 1 | 亥 Hai | 11 |
| 12 | *丙 Bing | 2 | *子 Zi | 0 |
| 13 | *丁 Ding | 3 | *丑 Chou | 1 |