/// <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."); } }
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); }
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); }