Ejemplo n.º 1
0
        public IHttpActionResult GenerateFibonacciSeries([FromBody] FibonacciRange req)
        {
            try
            {
                RabbitMQClient client = new RabbitMQClient();

                GenerateFibonacciPosRange fr = new GenerateFibonacciPosRange();
                BigInteger[] results         = new BigInteger[req.EndPosition - req.StartPosition + 1];
                results = fr.GetSeriesBetweenPosition(req.StartPosition, req.EndPosition);
                foreach (decimal num in results)
                {
                    req.result += num.ToString() + ", ";
                }
                //req.result = results.ToString();
                client.SendFibonacciSeries(req);

                client.Close();
            }
            catch (Exception)
            {
                return(StatusCode(HttpStatusCode.BadRequest));
            }

            return(Ok(req));
        }
Ejemplo n.º 2
0
        public void GeneraFibonacciPosRangeTest()
        {
            GenerateFibonacciPosRange fr = new GenerateFibonacciPosRange();

            BigInteger[] res = fr.GetSeriesBetweenPosition(40, 50);
            Assert.AreEqual(res.Length, 11);//12586269025,{4807526976} +

            Assert.AreEqual(res[10].ToString(), "12586269025");
        }
Ejemplo n.º 3
0
        public void GeneraFibonacciPosRangeWithCacheTest()
        {
            GenerateFibonacciPosRange fr = new GenerateFibonacciPosRange();

            BigInteger[] res = fr.GetSeriesBetweenPosition(4000, 5000);
            Assert.AreEqual(res.Length, 1001);
            Assert.AreEqual(res[1000].ToString(), "3878968454388325633701916308325905312082127714646245106160597214895550139044037097010822916462210669479293452858882973813483102008954982940361430156911478938364216563944106910214505634133706558656238254656700712525929903854933813928836378347518908762970712033337052923107693008518093849801803847813996748881765554653788291644268912980384613778969021502293082475666346224923071883324803280375039130352903304505842701147635242270210934637699104006714174883298422891491273104054328753298044273676822977244987749874555691907703880637046832794811358973739993110106219308149018570815397854379195305617510761053075688783766033667355445258844886241619210553457493675897849027988234351023599844663934853256411952221859563060475364645470760330902420806382584929156452876291575759142343809142302917491088984155209854432486594079793571316841692868039545309545388698114665082066862897420639323438488465240988742395873801976993820317174208932265468879364002630797780058759129671389634214252579116872755600360311370547754724604639987588046985178408674382863125");
            res = fr.GetSeriesBetweenPosition(20, 30);
            Assert.AreEqual(res[10].ToString(), "832040");
        }
Ejemplo n.º 4
0
        public IHttpActionResult GetFibonacciSeries([FromBody] FibonacciRange req)
        {
            try
            {
                //RabbitMQClient client = new RabbitMQClient();
                using (FibonacciContext context = new FibonacciContext())
                {
                    Fibonacci fibStart           = context.Fibonaccis.Find(req.StartPosition + 1);
                    Fibonacci fibEnd             = context.Fibonaccis.Find(req.EndPosition + 1);
                    GenerateFibonacciPosRange fr = new GenerateFibonacciPosRange();
                    BigInteger[] results         = new BigInteger[req.EndPosition - req.StartPosition + 1];


                    if (fibStart != null && fibEnd != null)
                    {
                        IQueryable <Fibonacci> rtn = from temp in context.Fibonaccis select temp;
                        var list = rtn.ToList();

                        var seriesToAdd = list.GetRange(req.StartPosition, req.EndPosition - req.StartPosition + 1);

                        //filling in the cache for future use.
                        //creating the response.
                        seriesToAdd.ForEach(fn =>
                        {
                            fr.fibSeries.Add(BigInteger.Parse(fn.FibonacciNumber));
                            req.FibonacciSeries += fn.FibonacciNumber + ", ";
                        });
                    }
                    else if (fibStart != null && fibEnd == null)
                    {
                        IQueryable <Fibonacci> rtn = from temp in context.Fibonaccis select temp;
                        var list    = rtn.ToList();
                        int fibNums = context.Fibonaccis.Count();


                        list.ForEach(fn =>
                        {
                            fr.fibSeries.Add(BigInteger.Parse(fn.FibonacciNumber));
                        });

                        results = fr.GetSeriesBetweenPosition(req.StartPosition, req.EndPosition);
                        foreach (BigInteger num in results)
                        {
                            req.FibonacciSeries += num.ToString() + ", ";
                        }

                        fr.SaveSeries(context);
                    }
                    else
                    {
                        results = fr.GetSeriesBetweenPosition(req.StartPosition, req.EndPosition);

                        results.ToList().ForEach(fn =>
                        {
                            req.FibonacciSeries += fn.ToString();
                        });

                        fr.SaveSeries(context);
                    }

                    //req.result = results.ToString();
                    //client.SendFibonacciSeries(req);

                    //client.Close();
                }
            }
            catch (Exception)
            {
                return(StatusCode(HttpStatusCode.BadRequest));
            }

            return(Ok(req));
        }