Exemple #1
0
        public ArithmeticMatrix(NumeralSet numeralSet)
        {
            if (numeralSet == null)
                throw new ArgumentNullException("numeralSet");
            this._numeralSet = numeralSet;

            var keys = this._numeralSet.SymbolSet.As<LinkedList<string>>().Values;
            this._addMap = new SquareLookup<Tuple<string, bool>>(keys);
            this._subtractMap = new SquareLookup<Tuple<string, bool>>(keys);
            this._compareMap = new SquareLookup<bool?>(keys);

            foreach (var key1 in keys)
            {
                foreach (var key2 in keys)
                {
                    var dig1 = numeralSet.GetSymbolicDigit(key1);
                    var rollover = dig1.Add(key2);
                    this._addMap.Add(key1, key2, new Tuple<string, bool>(dig1.Symbol, rollover));

                    dig1 = numeralSet.GetSymbolicDigit(key1);
                    rollover = dig1.Subtract(key2);
                    this._subtractMap.Add(key1, key2, new Tuple<string, bool>(dig1.Symbol, rollover));

                    dig1 = numeralSet.GetSymbolicDigit(key1);
                    var compare = dig1.Compare(key2);
                    this._compareMap.Add(key1, key2, compare);
                }
            }
        }
Exemple #2
0
        public static void Test()
        {
            //init the set
            NumeralSet set = new NumeralSet(".", "-");
            for (int i = 0; i < 10; i++)
            {
                set.AddSymbolToSet(i.ToString());
            }

            var digit = set.GetSymbolicDigit("0");
            Debug.Assert(digit.Symbol == "0");
            var s = digit.AddOne();
            Debug.Assert(!s);
            Debug.Assert(digit.Symbol == "1");
            digit.AddOne();
            Debug.Assert(digit.Symbol == "2");
            s = digit.Add("9");
            Debug.Assert(digit.Symbol == "1");
            Debug.Assert(s);
            digit.Subtract("1");
            Debug.Assert(digit.Symbol == "0");
            s = digit.SubtractOne();
            Debug.Assert(digit.Symbol == "9");
            Debug.Assert(s);

            for (int i = 0; i < 9; i++)
            {
                var i2 = i + 1;
                var digit1 = set.GetSymbolicDigit(i.ToString());
                var comp = digit1.Compare(i2.ToString());
                Debug.Assert(comp.Value == false);

                var digit2 = set.GetSymbolicDigit(i2.ToString());
                digit1.AddOne();
                Debug.Assert(digit1.Symbol == i2.ToString());
            }
        }
Exemple #3
0
        public static void Test()
        {
            //init the set
            NumeralSet set = new NumeralSet(".", "-");
            for (int i = 0; i < 10; i++)
            {
                set.AddSymbolToSet(i.ToString());
            }

            Debug.Assert(set.DecimalSymbol == ".");
            Debug.Assert(set.NegativeSymbol == "-");
            Debug.Assert(set.ZeroSymbol == "0");
            Debug.Assert(set.OneSymbol == "1");

            var parse1 = set.ParseSymbols("1234567890", true, true);
            Debug.Assert(parse1.Length == 10);
            Debug.Assert(parse1[0] == "1");
            Debug.Assert(parse1[1] == "2");
            Debug.Assert(parse1[2] == "3");
            Debug.Assert(parse1[3] == "4");
            Debug.Assert(parse1[4] == "5");
            Debug.Assert(parse1[5] == "6");
            Debug.Assert(parse1[6] == "7");
            Debug.Assert(parse1[7] == "8");
            Debug.Assert(parse1[8] == "9");
            Debug.Assert(parse1[9] == "0");

            var parse2 = set.ParseSymbols("-1234567890.123", true, true);
            Debug.Assert(parse2[0] == "-");
            Debug.Assert(parse2[1] == "1");
            Debug.Assert(parse2[2] == "2");
            Debug.Assert(parse2[3] == "3");
            Debug.Assert(parse2[4] == "4");
            Debug.Assert(parse2[5] == "5");
            Debug.Assert(parse2[6] == "6");
            Debug.Assert(parse2[7] == "7");
            Debug.Assert(parse2[8] == "8");
            Debug.Assert(parse2[9] == "9");
            Debug.Assert(parse2[10] == "0");
            Debug.Assert(parse2[11] == ".");
            Debug.Assert(parse2[12] == "1");
            Debug.Assert(parse2[13] == "2");
            Debug.Assert(parse2[14] == "3");

            var parse3 = set.ParseSymbols("-1234567890.123", false, true);
            Debug.Assert(parse3[14] == "-");
            Debug.Assert(parse3[13] == "1");
            Debug.Assert(parse3[12] == "2");
            Debug.Assert(parse3[11] == "3");
            Debug.Assert(parse3[10] == "4");
            Debug.Assert(parse3[9] == "5");
            Debug.Assert(parse3[8] == "6");
            Debug.Assert(parse3[7] == "7");
            Debug.Assert(parse3[6] == "8");
            Debug.Assert(parse3[5] == "9");
            Debug.Assert(parse3[4] == "0");
            Debug.Assert(parse3[3] == ".");
            Debug.Assert(parse3[2] == "1");
            Debug.Assert(parse3[1] == "2");
            Debug.Assert(parse3[0] == "3");

            try
            {
                var parse4 = set.ParseSymbols("x-1234567890.123", false, false);
            }
            catch { }

            var digit = set.GetSymbolicDigit("0");
            Debug.Assert(digit.Symbol.Equals(set.ZeroSymbol));
            var s = digit.AddOne();
            Debug.Assert(!s);
            Debug.Assert(digit.Symbol == "1");
            digit.AddOne();
            Debug.Assert(digit.Symbol == "2");
            s = digit.Add("9");
            Debug.Assert(digit.Symbol == "1");
            Debug.Assert(s);
            digit.Subtract("1");
            Debug.Assert(digit.Symbol == "0");
            s = digit.Subtract("1");
            Debug.Assert(digit.Symbol == "9");
            Debug.Assert(s);
        }