/// <summary> /// 变换指定的卦画,产生新卦画。 /// Derive a new painting from the given one. /// </summary> /// <param name="from"> /// 要变换的卦画。 /// The painting to derive from. /// </param> /// <returns> /// 变换结果。 /// The derived painting. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="from"/> 是 <c>null</c>. /// <paramref name="from"/> is <c>null</c>. /// </exception> public Core.Painting Derive(Core.Painting from) { if (from is null) { throw new ArgumentNullException(nameof(from)); } return(new Core.Painting(from.Reverse())); }
/// <summary> /// 进行转换。 /// Convert a painting. /// </summary> /// <param name="painting"> /// 要转换的卦画。 /// The painting to convert. /// </param> /// <returns> /// 转换结果。 /// The result. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="painting"/> 是 <c>null</c> 。 /// <paramref name="painting"/> is <c>null</c>. /// </exception> public string ConvertTo(Core.Painting painting) { if (painting is null) { throw new ArgumentNullException(nameof(painting)); } var linq = from line in painting.Reverse() select line.IsYang ? this.yang : this.yin; return(string.Join(this.separator, linq)); }
/// <summary> /// 比较卦画。 /// Compare the paintings. /// </summary> /// <param name="basis"> /// 作为比较标准的卦画。 /// The painting to be the comparing basis. /// </param> /// <param name="obj"> /// 要比较的卦画。 /// The painting to be compared. /// </param> /// <returns> /// 变换结果。 /// The derived painting. /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="basis"/> 或 <paramref name="obj"/> 是 <c>null</c>. /// <paramref name="basis"/> or <paramref name="obj"/> is <c>null</c>. /// </exception> public bool Compare(Core.Painting basis, Core.Painting obj) { if (basis is null) { throw new ArgumentNullException(nameof(basis)); } if (obj is null) { throw new ArgumentNullException(nameof(obj)); } return(basis.Reverse().SequenceEqual(obj)); }