コード例 #1
0
        /// <summary>
        /// Used Binet Formula since it's much faster than an ordinary one and also calculates values for negatives- http://mathworld.wolfram.com/BinetsFibonacciNumberFormula.html
        /// </summary>
        /// <param name="n"> The index (n) of the fibonacci sequence. </param>
        /// <returns> N-th number in the fibonacci sequence. </returns>
        public long GetFibonacci(long n)
        {
            var  cacheKey = $"Fibonacci:{n}";
            long result   = 0;

            if (IsInputWithinRange(n))
            {
                if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
                {
                    result = CalculateBinetFibonacci(n);
                    _memoryCacheWrapper.Set(cacheKey, result);
                }

                return(result);
            }
            else
            {
                throw new WrongInputException("Provided wrong input. Only integers from -92 to 92 are accepted.");
            }
        }
コード例 #2
0
        public string ReverseWords(string sentence)
        {
            if (sentence == null || sentence == string.Empty)
            {
                return(string.Empty);
            }

            var    cacheKey   = $"ReverseWords:{sentence}";
            var    splitWords = sentence.Split(' ');
            string result;

            if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
            {
                result = Reverse(splitWords);

                _memoryCacheWrapper.Set(cacheKey, result);
            }

            return(result);
        }
コード例 #3
0
        public TriangleTypeEnum DetermineTriangleType(int sideA, int sideB, int sideC)
        {
            bool doesTriangleExist = DoesTriangleExist(sideA, sideB, sideC);

            if (!doesTriangleExist)
            {
                return(TriangleTypeEnum.Error);
            }

            var cacheKey = $"TriangleType:{sideA};{sideB};{sideC}";
            TriangleTypeEnum result;

            if (!_memoryCacheWrapper.TryGetValue(cacheKey, out result))
            {
                result = CalculateTriangleType(sideA, sideB, sideC);
                _memoryCacheWrapper.Set(cacheKey, result);
            }

            return(result);
        }