Example #1
0
        public static ulong Normalize(ulong binary)
        {
            var series = new FibonacciSeries(Convert.ToInt32(binary));
            var dirty  = true;

            while (dirty)
            {
                dirty = false;
                for (var i = series.Count - 1; i > 0; i--)
                {
                    if ((GetBit(binary, i) & GetBit(binary, i - 1)) > 0)
                    {
                        dirty   = true;
                        binary -= Convert.ToUInt64(3 << (i - 1));
                        binary += Convert.ToUInt64(1 << i + 1);
                    }
                }
                if (binary % 2 > 0)
                {
                    binary += 1;
                    dirty   = true;
                }
            }

            return(binary);
        }
        static void Main(string[] args)
        {
            var series = new FibonacciSeries(10);

            foreach (int i in series)
            {
                Console.WriteLine(i);
            }
        }
Example #3
0
        internal void TestRecursive()
        {
            Console.WriteLine("------- Generating Fibonacci series Recursively---------------");
            FibonacciSeries fb     = new FibonacciSeries();
            var             series = fb.GenerateAndPrint(15);

            if (series != null)
            {
                Console.WriteLine(string.Join("\n", series));
            }
        }
        public void GetStringSeriesTest()
        {
            var lowerBound      = Convert.ToInt32(TestContext.DataRow["lowerBound"]);
            var upperBound      = Convert.ToInt32(TestContext.DataRow["upperBound"]);
            var fibonacciSeries = new FibonacciSeries(lowerBound, upperBound);
            var expected        = TestContext.DataRow["range"].ToString();

            string result = fibonacciSeries.GetStringSeries();

            StringAssert.Equals(expected, result);
        }
Example #5
0
 public FiboInt(UInt64 source)
 {
     series = new FibonacciSeries(2);
     number = 0;
     series.UpTo(source + 1);
     for (var i = series.Count - 1; i >= 0; i--)
     {
         var fNum     = series[i];
         var bitValue = source / fNum;
         number += (ulong)(1 << i) * bitValue;
         source %= fNum;
     }
 }
Example #6
0
 /// <summary>
 /// Generic Test Routine
 /// </summary>
 /// <param name="count"></param>
 private void TestRoutine(int count)
 {
     Console.WriteLine("------- The [{0}] Number of Fibonacci Series ------ ", count);
     try
     {
         int[] series = FibonacciSeries.Generate(count);
         if (series != null)
         {
             Console.WriteLine(string.Join("\n", series));
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Error Generating {0} number of Fibonacci Series\n{1}", count, ex.Message);
     }
     Console.WriteLine("-------------------------------------------------\n\n");
 }
Example #7
0
        public static FiboInt SimpleBinaryMultiply(FiboInt a, FiboInt b)
        {
            if (a.number == 2)
            {
                return(b);
            }
            if (b.number == 2)
            {
                return(a);
            }

            var series = new FibonacciSeries(a.series.Seed + b.series.Seed - 2);
            var first  = new FiboInt(series.N);
            var nextA  = a.series[a.series.Seed - 3];
            var nextB  = a.series[b.series.Seed - 3];
            var other  = SimpleBinaryMultiply(new FiboInt(nextA), new FiboInt(nextB));

            return(first + other);
        }
Example #8
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var numberBlock = (TextBlock)CalculatorManager.Manager.FindName("numberBlock");

            switch (Text)
            {
            case "F(n)":
                var       inputNum = int.Parse(numberBlock.Text);
                const int limit    = 32;
                if (inputNum < limit)
                {
                    var fNum = new FibonacciSeries(inputNum).N;
                    numberBlock.Text = fNum.ToString();
                }
                else
                {
                    CalculatorManager.Manager.ShowTip($"N should be less than {limit}");
                }
                break;

            case "=":
                CalculatorManager.Manager.Schedule.Add(numberBlock.Text);
                CalculatorManager.Manager.Schedule.Display();
                numberBlock.Text = String.Empty;
                break;

            case "CE":
                numberBlock.Text = "0";
                break;

            case "C":
                CalculatorManager.Manager.Schedule.Clear();
                CalculatorManager.Manager.Schedule.Display();
                numberBlock.Text = String.Empty;
                break;
            }
            CalculatorManager.Manager.ReadyToInput = true;
        }