示例#1
0
        public void InfiniteNumberTest1()
        {
            //Ulong Maxvalue = 18446744073709551615
            InfiniteNumber n1 = new InfiniteNumber(1234567890);

            Assert.AreEqual(n1.ToString(), "1234567890");
        }
        public void TestMethod100base3ToBase10()
        {
            InfiniteNumber n1 = new InfiniteNumber("10".Select(c => c.ToString()).ToArray(), 3);
            var            n3 = n1.ToBase10();

            Assert.AreEqual(n3.ToString(), "3");
        }
    public static InfiniteNumber operator *(InfiniteNumber a, InfiniteNumber b)
    {
        if (b == null)
        {
            throw new Exception("number is null");
        }
        //if (b.Base != a.Base)
        //    b = b.ToBase10(a.Base);
        if (a.IntArrayValue.Length == 1 && a.IntArrayValue[0] == 0 ||
            b.IntArrayValue.Length == 1 && b.IntArrayValue[0] == 0)
        {
            return(new InfiniteNumber(new string[] { "0" }, a.Base));
        }

        var result = new InfiniteNumber(new string[] { "0" }, a.Base);

        var number1 = new InfiniteNumber(new string[] { "1" }, a.Base);

        for (; !(b.IntArrayValue.Length == 1 && b.IntArrayValue[0] == 0); b = b - number1)
        {
            result = result + a;
        }

        return(result);
    }
示例#4
0
 public static void Main2(string[] args)
 {
     try
     {
         using (StreamWriter writer = new StreamWriter("out25.txt"))
         {
             writer.WriteLine("\"0\"");
             for (int i = 3; i <= 26; i++)
             {
                 var            numberCrecient   = new int[i].Select((v, index) => index).Reverse();
                 InfiniteNumber maxValue         = new InfiniteNumber(numberCrecient.ToArray(), i);
                 var            numberDecrecient = numberCrecient.Reverse().ToArray();
                 numberDecrecient[0] = 1;
                 numberDecrecient[1] = 0;
                 InfiniteNumber minValue   = new InfiniteNumber(numberDecrecient, i);
                 var            difference = (maxValue - minValue).ToBase10();
                 writer.WriteLine(", \"" + difference.ToString() + "\"");
             }
         }
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception);
     }
 }
        public void TestMethod1234567890prod1_Base10()
        {
            InfiniteNumber n1 = new InfiniteNumber("1234567890".Select(c => c.ToString()).ToArray(), 10);
            InfiniteNumber n2 = new InfiniteNumber("1".Select(c => c.ToString()).ToArray(), 10);
            var            n3 = n1 * n2;

            Assert.AreEqual(n3.ToString(), "1234567890");
        }
        public void TestMethod987diff90_Base10()
        {
            InfiniteNumber n1 = new InfiniteNumber("987".Select(c => c.ToString()).ToArray(), 10);
            InfiniteNumber n2 = new InfiniteNumber("90".Select(c => c.ToString()).ToArray(), 10);
            var            n3 = n1 - n2;

            Assert.AreEqual(n3.ToString(), (897).ToString());
        }
        public void TestMethod1Jplus1_Base20()
        {
            InfiniteNumber n1 = new InfiniteNumber("1J".Select(c => c.ToString()).ToArray(), 20);
            InfiniteNumber n2 = new InfiniteNumber("1".Select(c => c.ToString()).ToArray(), 20);
            var            n3 = n1 + n2;

            Assert.AreEqual(n3.ToString(), (20).ToString());
        }
        public void TestMethod9999plus1_Base10()
        {
            InfiniteNumber n1 = new InfiniteNumber("9999".Select(c => c.ToString()).ToArray(), 10);
            InfiniteNumber n2 = new InfiniteNumber("1".Select(c => c.ToString()).ToArray(), 10);
            var            n3 = n1 + n2;

            Assert.AreEqual(n3.ToString(), (9999 + 1).ToString());
        }
        public void TestMethod10234plus42310_Base10()
        {
            InfiniteNumber n1 = new InfiniteNumber("10234".Select(c => c.ToString()).ToArray(), 10);
            InfiniteNumber n2 = new InfiniteNumber("42310".Select(c => c.ToString()).ToArray(), 10);
            var            n3 = n1 + n2;

            Assert.AreEqual(n3.ToString(), (10234 + 42310).ToString());
        }
示例#10
0
        public void TestMethod10000diff10000_Base20()
        {
            InfiniteNumber n1 = new InfiniteNumber("10000".Select(c => c.ToString()).ToArray(), 20);
            InfiniteNumber n2 = new InfiniteNumber("10000".Select(c => c.ToString()).ToArray(), 20);
            var            n3 = n1 - n2;

            Assert.AreEqual(n3.ToString(), "0");
        }
示例#11
0
        public void InfiniteNumberTest6()
        {
            InfiniteNumber n1 = new InfiniteNumber();

            n1.O_Add(9);

            Assert.AreEqual(n1.ToString(), "9");
        }
示例#12
0
        public void TestMethod10pow40prod0_Base10()
        {
            InfiniteNumber n1 = new InfiniteNumber("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000".Select(c => c.ToString()).ToArray(), 10);
            InfiniteNumber n2 = new InfiniteNumber("0".Select(c => c.ToString()).ToArray(), 10);
            var            n3 = n1 * n2;

            Assert.AreEqual(n3.ToString(), "0");
        }
示例#13
0
 public void TestMethodManybasesToBase10()
 {
     for (int baseN = 2; baseN < 27; baseN++)
     {
         InfiniteNumber n1 = new InfiniteNumber("10".Select(c => c.ToString()).ToArray(), baseN);
         var            n3 = n1.ToBase10();
         Assert.AreEqual(n3.ToString(), baseN.ToString());
     }
 }
示例#14
0
        public void InfiniteNumberTest2()
        {
            //Ulong Maxvalue = 18446744073709551615
            //                  1000000000000000000
            //                   999999999999999999

            InfiniteNumber n1 = new InfiniteNumber();

            n1.O_Add(999999999999999999);
            Assert.AreEqual(n1.ToString(), "999999999999999999");
        }
示例#15
0
        public void InfiniteNumberTest4()
        {
            //Ulong Maxvalue = 18446744073709551615
            //                  1000000000000000000
            //                   999999999999999999

            InfiniteNumber n1 = new InfiniteNumber();

            n1.O_Add(999999999999999999);
            n1.O_Add(1);
            Console.WriteLine(n1);
            Assert.AreEqual(n1.ToString(), "1000000000000000000");
        }
    public override void OnGUI(Rect rect, SerializedProperty property, GUIContent label)
    {
        // get serialized property
        SerializedProperty valueStringProp = property.FindPropertyRelative("serializedValue");

        // get tooltip
        string           tooltipText = null;
        TooltipAttribute tooltip     = GetTooltip(fieldInfo, true);

        if (tooltip != null)
        {
            tooltipText = tooltip.tooltip;
        }

        // cache rect width
        float rectWidth = rect.width;

        // show label as int field for scroll capabilities
        rect.width = EditorGUIUtility.labelWidth + 2;

        EditorGUI.BeginChangeCheck();
        long scrollVal = EditorGUI.LongField(rect, new GUIContent(property.displayName, tooltipText), 0);

        if (EditorGUI.EndChangeCheck())
        {
            InfiniteNumber nb = new InfiniteNumber(valueStringProp.stringValue);
            nb += scrollVal;

            valueStringProp.stringValue = nb.ToString();
        }

        rect.x    += rect.width;
        rect.width = rectWidth - rect.width;

        // show text area
        EditorGUI.BeginProperty(rect, label, property);
        {
            EditorGUI.BeginChangeCheck();
            string newVal = EditorGUI.DelayedTextField(rect, new GUIContent(""), InfiniteNumber.FormatString(valueStringProp.stringValue),
                                                       EditorStyles.numberField);
            if (EditorGUI.EndChangeCheck())
            {
                valueStringProp.stringValue = newVal;
            }
        }
        EditorGUI.EndProperty();
    }
    public InfiniteNumber ToBase10()
    {
        if (Base == 10)
        {
            return(this);
        }

        int length = this.IntArrayValue.Length;

        if (length == 1)
        {
            return(new InfiniteNumber(IntArrayValue[0].ToString().Select(c => c.ToString()).ToArray(), 10));
        }
        else
        {
            var firstDigitNumber = new InfiniteNumber(IntArrayValue[IntArrayValue.Length - 1].ToString().Select(c => c.ToString()).ToArray(), 10);
            var restProd1        = new InfiniteNumber(StringArrayValue.Take(IntArrayValue.Length - 1).ToArray(), Base).ToBase10();
            var restNumber       = restProd1 * new InfiniteNumber(Base.ToString().Select(c => c.ToString()).ToArray(), 10);
            return(firstDigitNumber + restNumber);
        }
    }