Beispiel #1
0
 public static Shever operator !(Shever a)
 {
     Shever b = new Shever();
     b.Mana = 0;
     b.Mone = a.Mahane;
     b.Mahane = a.Mana * a.Mahane + a.Mone;
     b.Tsimtsum();
     return b;
 }
Beispiel #2
0
 /// <summary>
 /// calculate the fragment multiple fragment
 /// </summary>
 /// <param name="a">First fragment</param>
 /// <param name="b">Secend fragment</param>
 public static Shever operator *(Shever a, Shever b)
 {
     Shever c = new Shever();
     c.Mahane = a.Mahane * b.Mahane;
     c.Mone = (a.Mana * a.Mahane + a.Mone) * (b.Mana * b.Mahane + b.Mone);
     if (c.Mone > c.Mahane)
     {
         int temp = c.Mone;
         c.Mone = c.Mone % c.Mahane;
         c.Mana += c.Mone / c.Mahane;
     }
     return c;
 }
Beispiel #3
0
 /// <summary>
 /// calculate the fragment minus fragment
 /// </summary>
 /// <param name="a">First fragment</param>
 /// <param name="b">Secend fragment</param>
 public static Shever operator -(Shever a, Shever b)
 {
     Shever c = new Shever();
     c.Mana = a.Mana - b.Mana;
     c.Mahane = a.Mahane * b.Mahane;
     c.Mone = a.Mone * b.Mahane - a.Mahane * b.Mone;
     if (c.Mone > c.Mahane)
     {
         int temp = c.Mone;
         c.Mone = c.Mone % c.Mahane;
         c.Mana += c.Mone / c.Mahane;
     }
     if (c.Mone < 0)
     {
         c.Mana -= 1;
         c.Mone += c.Mahane;
     }
     return c;
 }
Beispiel #4
0
        /// <summary>
        /// Parse the fragment from string
        /// </summary>
        /// <remarks>
        /// If string not proper -> returns Empty fragment
        /// </remarks>
        public static Shever Parse(string str)
        {
            try
            {
                Shever shever = new Shever();

                str.Replace("(", "");
                str.Replace(")", "");

                string[] ar = str.Split('&');
                shever.Mana = int.Parse(ar[0]);
                shever.Mone = int.Parse(ar[1]);
                shever.Mahane = int.Parse(ar[2]);

                return shever;
            }
            catch
            {
                return new Shever();
            }
        }
Beispiel #5
0
        /// <summary>
        /// calculate the fragment plus fragment
        /// </summary>
        /// <param name="a">First fragment</param>
        /// <param name="b">Secend fragment</param>
        public static double operator +(Shever a, Shever b)
        {
            Shever c = new Shever();
            c.Mana = a.Mana + b.Mana;
            c.Mahane = a.Mahane * b.Mahane;
            c.Mone = a.Mone * b.Mahane + a.Mahane * b.Mone;
            c.Tsimtsum();

            if (a.ToDouble() + b.ToDouble() != c.ToDouble())
            {
                throw new System.Exception("problem with parsing to double : " + a.ToString() + "@" + b.ToString() + "@" + c.ToString());
            }
            return c.ToDouble();
        }