/// <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()));
 }
예제 #2
0
        /// <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));
        }
예제 #3
0
        /// <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));
        }