第一題 使用 Scala 中的 Trait, Object, 來表現易經中八卦的變化. - 易生太極, 太極生二儀, 二儀生四象, 四象生八卦, 八八演化六十四.
8經卦 = 24爻 = 3爻 * 8 = 陰陽各12爻
package chaoyi.kuo.iching
/** * @author ChaoYi, Kuo * Mail: Kuo.ChaoYi@gmail.com * * @see http://en.wikipedia.org/wiki/Taiji */
trait Taiji { val cName: String = "太極" val token = "☯" // 二儀 val yangCname= "陽" val yangValue: Boolean = true val yangBit: Int = 1 // 陰為陽反 val yinCname = "陰" val yinValue = !yangValue val yinBit = 0 }
待處理idea Trait 四象 extends 太極
package chaoyi.kuo.iching
/**
* @author ChaoYi, Kuo
*/
trait FourSymbols extends Taiji {
val oldYang: List[Boolean] = yangValue::yangValue::Nil
val youngYin = yinValue::yangValue::Nil
val oldYin: List[Boolean] = List[Boolean](yinValue, yinValue)
val youngYang = List[Boolean](yangValue, yinValue)
}
- 四象為二對相反組, 其實可以用 map 來處理, 但為了當教學用教材, 在這僅以最簡易的多樣表達.
Trait 八卦 extends 四象
package chaoyi.kuo.iching
trait Bagua extends FourSymbols with Taiji{ val sky = yangValue::oldYang val earth = yinValue::oldYin val fire = yangValue::youngYin }
- 同四象的構思, 簡化教材用
- 待加入河圖洛書數
- 待加入先天和後天八卦順序處理
- 五行的表現也待納入
Object 64卦 extends 八卦
package chaoyi.kuo.iching
object Gua64 extends Bagua { val g01 = sky++sky val g11 = earth++sky val g30 = fire++fire
}
- 同四象的構思, 簡化教材用
- 十二個月(辟卦)與十二地支要能表現出來
- 理論上應該要配合 01.爻變演算法 來完成, 一來減少人工處理的思維與降低錯誤, 二來符合易經的推演.
UnitTest
package chaoyi.kuo.iching.test
import chaoyi.kuo.iching._
object MainTest { def main(args : Array[String]) : Unit = { println(Gua64.g01) println(Gua64.g11) }
}
/* List(true, true, true, true, true, true) // 乾卦
List(false, false, false, true, true, true) // 地天泰卦 */
Reference
http://huxueyanyijingsh.blog.sohu.com/136057195.html |
|